\section{Ether\+C\+AT Application Interface}
\label{group__ApplicationInterface}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}


Ether\+C\+AT interface for realtime applications.  


\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ ec\+\_\+master\+\_\+state\+\_\+t}
\begin{DoxyCompactList}\small\item\em Master state. \end{DoxyCompactList}\item 
struct \textbf{ ec\+\_\+master\+\_\+link\+\_\+state\+\_\+t}
\begin{DoxyCompactList}\small\item\em Redundant link state. \end{DoxyCompactList}\item 
struct \textbf{ ec\+\_\+slave\+\_\+config\+\_\+state\+\_\+t}
\begin{DoxyCompactList}\small\item\em Slave configuration state. \end{DoxyCompactList}\item 
struct \textbf{ ec\+\_\+master\+\_\+info\+\_\+t}
\begin{DoxyCompactList}\small\item\em Master information. \end{DoxyCompactList}\item 
struct \textbf{ ec\+\_\+slave\+\_\+port\+\_\+link\+\_\+t}
\begin{DoxyCompactList}\small\item\em Ether\+C\+AT slave port information. \end{DoxyCompactList}\item 
struct \textbf{ ec\+\_\+slave\+\_\+info\+\_\+t}
\begin{DoxyCompactList}\small\item\em Slave information. \end{DoxyCompactList}\item 
struct \textbf{ ec\+\_\+domain\+\_\+state\+\_\+t}
\begin{DoxyCompactList}\small\item\em Domain state. \end{DoxyCompactList}\item 
struct \textbf{ ec\+\_\+pdo\+\_\+entry\+\_\+info\+\_\+t}
\begin{DoxyCompactList}\small\item\em P\+DO entry configuration information. \end{DoxyCompactList}\item 
struct \textbf{ ec\+\_\+pdo\+\_\+info\+\_\+t}
\begin{DoxyCompactList}\small\item\em P\+DO configuration information. \end{DoxyCompactList}\item 
struct \textbf{ ec\+\_\+sync\+\_\+info\+\_\+t}
\begin{DoxyCompactList}\small\item\em Sync manager configuration information. \end{DoxyCompactList}\item 
struct \textbf{ ec\+\_\+pdo\+\_\+entry\+\_\+reg\+\_\+t}
\begin{DoxyCompactList}\small\item\em List record type for P\+DO entry mass-\/registration. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\mbox{\label{group__ApplicationInterface_gab5c4a56925d06baf2787d2bc7b6390bb}} 
\#define \textbf{ E\+C\+R\+T\+\_\+\+V\+E\+R\+\_\+\+M\+A\+J\+OR}~1
\begin{DoxyCompactList}\small\item\em Ether\+C\+AT realtime interface major version number. \end{DoxyCompactList}\item 
\mbox{\label{group__ApplicationInterface_ga50d00fb774853fb6c974c3467a7403b1}} 
\#define \textbf{ E\+C\+R\+T\+\_\+\+V\+E\+R\+\_\+\+M\+I\+N\+OR}~5
\begin{DoxyCompactList}\small\item\em Ether\+C\+AT realtime interface minor version number. \end{DoxyCompactList}\item 
\mbox{\label{group__ApplicationInterface_ga9e1274b72978322b0df48bf16e760439}} 
\#define \textbf{ E\+C\+R\+T\+\_\+\+V\+E\+R\+S\+I\+ON}(a,  b)~(((a) $<$$<$ 8) + (b))
\begin{DoxyCompactList}\small\item\em Ether\+C\+AT realtime interface version word generator. \end{DoxyCompactList}\item 
\mbox{\label{group__ApplicationInterface_ga9da1b3be0320bb6fd2fd7a87874e6324}} 
\#define \textbf{ E\+C\+R\+T\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+A\+G\+IC}~\textbf{ E\+C\+R\+T\+\_\+\+V\+E\+R\+S\+I\+ON}(\textbf{ E\+C\+R\+T\+\_\+\+V\+E\+R\+\_\+\+M\+A\+J\+OR}, \textbf{ E\+C\+R\+T\+\_\+\+V\+E\+R\+\_\+\+M\+I\+N\+OR})
\begin{DoxyCompactList}\small\item\em Ether\+C\+AT realtime interface version word. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+D\+U\+N\+D\+A\+N\+CY}
\begin{DoxyCompactList}\small\item\em Defined, if the redundancy features are available. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+CY}
\begin{DoxyCompactList}\small\item\em Defined, if the CoE emergency ring feature is available. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+G\+\_\+\+A\+C\+C\+E\+SS}
\begin{DoxyCompactList}\small\item\em Defined, if the register access interface is available. \end{DoxyCompactList}\item 
\mbox{\label{group__ApplicationInterface_gaeede7fdd550dd23956e71d0149e41738}} 
\#define \textbf{ E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+S\+E\+L\+E\+C\+T\+\_\+\+R\+E\+F\+\_\+\+C\+L\+O\+CK}
\begin{DoxyCompactList}\small\item\em Defined if the method \doxyref{ecrt\+\_\+master\+\_\+select\+\_\+reference\+\_\+clock()}{p.}{group__ApplicationInterface_ga31983aeee279fc5acaf5f7a0bb403160} is available. \end{DoxyCompactList}\item 
\mbox{\label{group__ApplicationInterface_ga430c21af72fdb8db3d8ca3936f4ce0ab}} 
\#define \textbf{ E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+F\+\_\+\+C\+L\+O\+C\+K\+\_\+\+T\+I\+ME}
\begin{DoxyCompactList}\small\item\em Defined if the method \doxyref{ecrt\+\_\+master\+\_\+reference\+\_\+clock\+\_\+time()}{p.}{group__ApplicationInterface_gaefb582f13442ef8b770fd308b8de949c} is available. \end{DoxyCompactList}\item 
\mbox{\label{group__ApplicationInterface_ga380318ba3695d3b526ca72f489a86781}} 
\#define \textbf{ E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+G\+\_\+\+B\+Y\+\_\+\+P\+OS}
\begin{DoxyCompactList}\small\item\em Defined if the method \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+pos()}{p.}{group__ApplicationInterface_ga757fd3d421f1ded8ee310c4698afb8ba} is available. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+E\+ND}~$\sim$0U
\begin{DoxyCompactList}\small\item\em End of list marker. \end{DoxyCompactList}\item 
\mbox{\label{group__ApplicationInterface_gab737cd2955a397ebd0df13e9148cec9f}} 
\#define \textbf{ E\+C\+\_\+\+M\+A\+X\+\_\+\+S\+Y\+N\+C\+\_\+\+M\+A\+N\+A\+G\+E\+RS}~16
\begin{DoxyCompactList}\small\item\em Maximum number of sync managers per slave. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+M\+A\+X\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+L\+E\+N\+G\+TH}~64
\begin{DoxyCompactList}\small\item\em Maximum string length. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+M\+A\+X\+\_\+\+P\+O\+R\+TS}~4
\begin{DoxyCompactList}\small\item\em Maximum number of slave ports. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+T\+I\+M\+E\+V\+A\+L2\+N\+A\+NO}(TV)~(((TV).tv\+\_\+sec -\/ 946684800\+U\+L\+L) $\ast$ 1000000000\+U\+L\+L + (\+T\+V).\+tv\+\_\+usec $\ast$ 1000\+U\+L\+L)
\begin{DoxyCompactList}\small\item\em Timeval to nanoseconds conversion. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+C\+O\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+C\+Y\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE}~8
\begin{DoxyCompactList}\small\item\em Size of a CoE emergency message in byte. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+B\+IT}(D\+A\+TA,  P\+OS)~(($\ast$((uint8\+\_\+t $\ast$) (D\+A\+TA)) $>$$>$ (P\+OS)) \& 0x01)
\begin{DoxyCompactList}\small\item\em Read a certain bit of an Ether\+C\+AT data byte. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+B\+IT}(D\+A\+TA,  P\+OS,  V\+AL)
\begin{DoxyCompactList}\small\item\em Write a certain bit of an Ether\+C\+AT data byte. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U8}(D\+A\+TA)~((uint8\+\_\+t) $\ast$((uint8\+\_\+t $\ast$) (D\+A\+TA)))
\begin{DoxyCompactList}\small\item\em Read an 8-\/bit unsigned value from Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S8}(D\+A\+TA)~((int8\+\_\+t) $\ast$((uint8\+\_\+t $\ast$) (D\+A\+TA)))
\begin{DoxyCompactList}\small\item\em Read an 8-\/bit signed value from Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U16}(D\+A\+TA)~((uint16\+\_\+t) le16\+\_\+to\+\_\+cpup((void $\ast$) (D\+A\+TA)))
\begin{DoxyCompactList}\small\item\em Read a 16-\/bit unsigned value from Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S16}(D\+A\+TA)~((int16\+\_\+t) le16\+\_\+to\+\_\+cpup((void $\ast$) (D\+A\+TA)))
\begin{DoxyCompactList}\small\item\em Read a 16-\/bit signed value from Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U32}(D\+A\+TA)~((uint32\+\_\+t) le32\+\_\+to\+\_\+cpup((void $\ast$) (D\+A\+TA)))
\begin{DoxyCompactList}\small\item\em Read a 32-\/bit unsigned value from Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S32}(D\+A\+TA)~((int32\+\_\+t) le32\+\_\+to\+\_\+cpup((void $\ast$) (D\+A\+TA)))
\begin{DoxyCompactList}\small\item\em Read a 32-\/bit signed value from Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U64}(D\+A\+TA)~((uint64\+\_\+t) le64\+\_\+to\+\_\+cpup((void $\ast$) (D\+A\+TA)))
\begin{DoxyCompactList}\small\item\em Read a 64-\/bit unsigned value from Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S64}(D\+A\+TA)~((int64\+\_\+t) le64\+\_\+to\+\_\+cpup((void $\ast$) (D\+A\+TA)))
\begin{DoxyCompactList}\small\item\em Read a 64-\/bit signed value from Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U8}(D\+A\+TA,  V\+AL)
\begin{DoxyCompactList}\small\item\em Write an 8-\/bit unsigned value to Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S8}(D\+A\+TA,  V\+AL)~\textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U8}(D\+A\+TA, V\+AL)
\begin{DoxyCompactList}\small\item\em Write an 8-\/bit signed value to Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U16}(D\+A\+TA,  V\+AL)
\begin{DoxyCompactList}\small\item\em Write a 16-\/bit unsigned value to Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S16}(D\+A\+TA,  V\+AL)~\textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U16}(D\+A\+TA, V\+AL)
\begin{DoxyCompactList}\small\item\em Write a 16-\/bit signed value to Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U32}(D\+A\+TA,  V\+AL)
\begin{DoxyCompactList}\small\item\em Write a 32-\/bit unsigned value to Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S32}(D\+A\+TA,  V\+AL)~\textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U32}(D\+A\+TA, V\+AL)
\begin{DoxyCompactList}\small\item\em Write a 32-\/bit signed value to Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U64}(D\+A\+TA,  V\+AL)
\begin{DoxyCompactList}\small\item\em Write a 64-\/bit unsigned value to Ether\+C\+AT data. \end{DoxyCompactList}\item 
\#define \textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S64}(D\+A\+TA,  V\+AL)~\textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U64}(D\+A\+TA, V\+AL)
\begin{DoxyCompactList}\small\item\em Write a 64-\/bit signed value to Ether\+C\+AT data. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \textbf{ ec\+\_\+master} \textbf{ ec\+\_\+master\+\_\+t}
\item 
typedef struct \textbf{ ec\+\_\+slave\+\_\+config} \textbf{ ec\+\_\+slave\+\_\+config\+\_\+t}
\item 
typedef struct \textbf{ ec\+\_\+domain} \textbf{ ec\+\_\+domain\+\_\+t}
\item 
typedef struct \textbf{ ec\+\_\+sdo\+\_\+request} \textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t}
\item 
typedef struct \textbf{ ec\+\_\+voe\+\_\+handler} \textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t}
\item 
typedef struct \textbf{ ec\+\_\+reg\+\_\+request} \textbf{ ec\+\_\+reg\+\_\+request\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \textbf{ ec\+\_\+slave\+\_\+port\+\_\+desc\+\_\+t} \{ \textbf{ E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+N\+O\+T\+\_\+\+I\+M\+P\+L\+E\+M\+E\+N\+T\+ED}, 
\textbf{ E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+N\+O\+T\+\_\+\+C\+O\+N\+F\+I\+G\+U\+R\+ED}, 
\textbf{ E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+E\+B\+US}, 
\textbf{ E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+M\+II}
 \}\begin{DoxyCompactList}\small\item\em Ether\+C\+AT slave port descriptor. \end{DoxyCompactList}
\item 
enum \textbf{ ec\+\_\+wc\+\_\+state\+\_\+t} \{ \textbf{ E\+C\+\_\+\+W\+C\+\_\+\+Z\+E\+RO} = 0, 
\textbf{ E\+C\+\_\+\+W\+C\+\_\+\+I\+N\+C\+O\+M\+P\+L\+E\+TE}, 
\textbf{ E\+C\+\_\+\+W\+C\+\_\+\+C\+O\+M\+P\+L\+E\+TE}
 \}\begin{DoxyCompactList}\small\item\em Domain working counter interpretation. \end{DoxyCompactList}
\item 
enum \textbf{ ec\+\_\+direction\+\_\+t} \{ \textbf{ E\+C\+\_\+\+D\+I\+R\+\_\+\+I\+N\+V\+A\+L\+ID}, 
\textbf{ E\+C\+\_\+\+D\+I\+R\+\_\+\+O\+U\+T\+P\+UT}, 
\textbf{ E\+C\+\_\+\+D\+I\+R\+\_\+\+I\+N\+P\+UT}, 
\textbf{ E\+C\+\_\+\+D\+I\+R\+\_\+\+C\+O\+U\+NT}
 \}\begin{DoxyCompactList}\small\item\em Direction type for P\+DO assignment functions. \end{DoxyCompactList}
\item 
enum \textbf{ ec\+\_\+watchdog\+\_\+mode\+\_\+t} \{ \textbf{ E\+C\+\_\+\+W\+D\+\_\+\+D\+E\+F\+A\+U\+LT}, 
\textbf{ E\+C\+\_\+\+W\+D\+\_\+\+E\+N\+A\+B\+LE}, 
\textbf{ E\+C\+\_\+\+W\+D\+\_\+\+D\+I\+S\+A\+B\+LE}
 \}\begin{DoxyCompactList}\small\item\em Watchdog mode for sync manager configuration. \end{DoxyCompactList}
\item 
enum \textbf{ ec\+\_\+request\+\_\+state\+\_\+t} \{ \textbf{ E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+U\+N\+U\+S\+ED}, 
\textbf{ E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY}, 
\textbf{ E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+SS}, 
\textbf{ E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+E\+R\+R\+OR}
 \}\begin{DoxyCompactList}\small\item\em Request state. \end{DoxyCompactList}
\item 
enum \textbf{ ec\+\_\+al\+\_\+state\+\_\+t} \{ \textbf{ E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+I\+N\+IT} = 1, 
\textbf{ E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+P\+R\+E\+OP} = 2, 
\textbf{ E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+A\+F\+E\+OP} = 4, 
\textbf{ E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+OP} = 8
 \}\begin{DoxyCompactList}\small\item\em Application-\/layer state. \end{DoxyCompactList}
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
unsigned int \textbf{ ecrt\+\_\+version\+\_\+magic} (void)
\begin{DoxyCompactList}\small\item\em Returns the version magic of the realtime interface. \end{DoxyCompactList}\item 
\textbf{ ec\+\_\+master\+\_\+t} $\ast$ \textbf{ ecrt\+\_\+request\+\_\+master} (unsigned int master\+\_\+index)
\begin{DoxyCompactList}\small\item\em Requests an Ether\+C\+AT master for realtime operation. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+release\+\_\+master} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master)
\begin{DoxyCompactList}\small\item\em Releases a requested Ether\+C\+AT master. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+master\+\_\+callbacks} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, void($\ast$send\+\_\+cb)(void $\ast$), void($\ast$receive\+\_\+cb)(void $\ast$), void $\ast$cb\+\_\+data)
\begin{DoxyCompactList}\small\item\em Sets the locking callbacks. \end{DoxyCompactList}\item 
\textbf{ ec\+\_\+domain\+\_\+t} $\ast$ \textbf{ ecrt\+\_\+master\+\_\+create\+\_\+domain} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master)
\begin{DoxyCompactList}\small\item\em Creates a new process data domain. \end{DoxyCompactList}\item 
\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$ \textbf{ ecrt\+\_\+master\+\_\+slave\+\_\+config} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, uint16\+\_\+t alias, uint16\+\_\+t position, uint32\+\_\+t vendor\+\_\+id, uint32\+\_\+t product\+\_\+code)
\begin{DoxyCompactList}\small\item\em Obtains a slave configuration. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+master\+\_\+select\+\_\+reference\+\_\+clock} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, \textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc)
\begin{DoxyCompactList}\small\item\em Selects the reference clock for distributed clocks. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+master} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, \textbf{ ec\+\_\+master\+\_\+info\+\_\+t} $\ast$master\+\_\+info)
\begin{DoxyCompactList}\small\item\em Obtains master information. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+master\+\_\+get\+\_\+slave} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, uint16\+\_\+t slave\+\_\+position, \textbf{ ec\+\_\+slave\+\_\+info\+\_\+t} $\ast$slave\+\_\+info)
\begin{DoxyCompactList}\small\item\em Obtains slave information. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+master\+\_\+sdo\+\_\+download} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, uint16\+\_\+t slave\+\_\+position, uint16\+\_\+t index, uint8\+\_\+t subindex, uint8\+\_\+t $\ast$data, size\+\_\+t data\+\_\+size, uint32\+\_\+t $\ast$abort\+\_\+code)
\begin{DoxyCompactList}\small\item\em Executes an S\+DO download request to write data to a slave. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+master\+\_\+sdo\+\_\+download\+\_\+complete} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, uint16\+\_\+t slave\+\_\+position, uint16\+\_\+t index, uint8\+\_\+t $\ast$data, size\+\_\+t data\+\_\+size, uint32\+\_\+t $\ast$abort\+\_\+code)
\begin{DoxyCompactList}\small\item\em Executes an S\+DO download request to write data to a slave via complete access. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+master\+\_\+sdo\+\_\+upload} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, uint16\+\_\+t slave\+\_\+position, uint16\+\_\+t index, uint8\+\_\+t subindex, uint8\+\_\+t $\ast$target, size\+\_\+t target\+\_\+size, size\+\_\+t $\ast$result\+\_\+size, uint32\+\_\+t $\ast$abort\+\_\+code)
\begin{DoxyCompactList}\small\item\em Executes an S\+DO upload request to read data from a slave. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+master\+\_\+write\+\_\+idn} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, uint16\+\_\+t slave\+\_\+position, uint8\+\_\+t drive\+\_\+no, uint16\+\_\+t idn, uint8\+\_\+t $\ast$data, size\+\_\+t data\+\_\+size, uint16\+\_\+t $\ast$error\+\_\+code)
\begin{DoxyCompactList}\small\item\em Executes an SoE write request. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+master\+\_\+read\+\_\+idn} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, uint16\+\_\+t slave\+\_\+position, uint8\+\_\+t drive\+\_\+no, uint16\+\_\+t idn, uint8\+\_\+t $\ast$target, size\+\_\+t target\+\_\+size, size\+\_\+t $\ast$result\+\_\+size, uint16\+\_\+t $\ast$error\+\_\+code)
\begin{DoxyCompactList}\small\item\em Executes an SoE read request. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+master\+\_\+activate} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master)
\begin{DoxyCompactList}\small\item\em Finishes the configuration phase and prepares for cyclic operation. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+master\+\_\+deactivate} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master)
\begin{DoxyCompactList}\small\item\em Deactivates the master. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+master\+\_\+set\+\_\+send\+\_\+interval} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, size\+\_\+t send\+\_\+interval)
\begin{DoxyCompactList}\small\item\em Set interval between calls to \doxyref{ecrt\+\_\+master\+\_\+send()}{p.}{group__ApplicationInterface_ga453f787866ee66afb98130cf4723762d}. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+master\+\_\+send} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master)
\begin{DoxyCompactList}\small\item\em Sends all datagrams in the queue. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+master\+\_\+receive} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master)
\begin{DoxyCompactList}\small\item\em Fetches received frames from the hardware and processes the datagrams. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+master\+\_\+send\+\_\+ext} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master)
\begin{DoxyCompactList}\small\item\em Sends non-\/application datagrams. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+master\+\_\+state} (const \textbf{ ec\+\_\+master\+\_\+t} $\ast$master, \textbf{ ec\+\_\+master\+\_\+state\+\_\+t} $\ast$state)
\begin{DoxyCompactList}\small\item\em Reads the current master state. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+master\+\_\+link\+\_\+state} (const \textbf{ ec\+\_\+master\+\_\+t} $\ast$master, unsigned int dev\+\_\+idx, \textbf{ ec\+\_\+master\+\_\+link\+\_\+state\+\_\+t} $\ast$state)
\begin{DoxyCompactList}\small\item\em Reads the current state of a redundant link. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+master\+\_\+application\+\_\+time} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, uint64\+\_\+t app\+\_\+time)
\begin{DoxyCompactList}\small\item\em Sets the application time. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+master\+\_\+sync\+\_\+reference\+\_\+clock} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master)
\begin{DoxyCompactList}\small\item\em Queues the DC reference clock drift compensation datagram for sending. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+master\+\_\+sync\+\_\+slave\+\_\+clocks} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master)
\begin{DoxyCompactList}\small\item\em Queues the DC clock drift compensation datagram for sending. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+master\+\_\+reference\+\_\+clock\+\_\+time} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master, uint32\+\_\+t $\ast$time)
\begin{DoxyCompactList}\small\item\em Get the lower 32 bit of the reference clock system time. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+queue} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master)
\begin{DoxyCompactList}\small\item\em Queues the DC synchrony monitoring datagram for sending. \end{DoxyCompactList}\item 
uint32\+\_\+t \textbf{ ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+process} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master)
\begin{DoxyCompactList}\small\item\em Processes the DC synchrony monitoring datagram. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+master\+\_\+reset} (\textbf{ ec\+\_\+master\+\_\+t} $\ast$master)
\begin{DoxyCompactList}\small\item\em Retry configuring slaves. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+sync\+\_\+manager} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint8\+\_\+t sync\+\_\+index, \textbf{ ec\+\_\+direction\+\_\+t} direction, \textbf{ ec\+\_\+watchdog\+\_\+mode\+\_\+t} watchdog\+\_\+mode)
\begin{DoxyCompactList}\small\item\em Configure a sync manager. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+watchdog} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint16\+\_\+t watchdog\+\_\+divider, uint16\+\_\+t watchdog\+\_\+intervals)
\begin{DoxyCompactList}\small\item\em Configure a slave\textquotesingle{}s watchdog times. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+add} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint8\+\_\+t sync\+\_\+index, uint16\+\_\+t index)
\begin{DoxyCompactList}\small\item\em Add a P\+DO to a sync manager\textquotesingle{}s P\+DO assignment. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+clear} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint8\+\_\+t sync\+\_\+index)
\begin{DoxyCompactList}\small\item\em Clear a sync manager\textquotesingle{}s P\+DO assignment. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+add} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint16\+\_\+t pdo\+\_\+index, uint16\+\_\+t entry\+\_\+index, uint8\+\_\+t entry\+\_\+subindex, uint8\+\_\+t entry\+\_\+bit\+\_\+length)
\begin{DoxyCompactList}\small\item\em Add a P\+DO entry to the given P\+DO\textquotesingle{}s mapping. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+clear} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint16\+\_\+t pdo\+\_\+index)
\begin{DoxyCompactList}\small\item\em Clear the mapping of a given P\+DO. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+pdos} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, unsigned int n\+\_\+syncs, const \textbf{ ec\+\_\+sync\+\_\+info\+\_\+t} syncs[$\,$])
\begin{DoxyCompactList}\small\item\em Specify a complete P\+DO configuration. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint16\+\_\+t entry\+\_\+index, uint8\+\_\+t entry\+\_\+subindex, \textbf{ ec\+\_\+domain\+\_\+t} $\ast$domain, unsigned int $\ast$bit\+\_\+position)
\begin{DoxyCompactList}\small\item\em Registers a P\+DO entry for process data exchange in a domain. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+pos} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint8\+\_\+t sync\+\_\+index, unsigned int pdo\+\_\+pos, unsigned int entry\+\_\+pos, \textbf{ ec\+\_\+domain\+\_\+t} $\ast$domain, unsigned int $\ast$bit\+\_\+position)
\begin{DoxyCompactList}\small\item\em Registers a P\+DO entry using its position. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+dc} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint16\+\_\+t assign\+\_\+activate, uint32\+\_\+t sync0\+\_\+cycle, int32\+\_\+t sync0\+\_\+shift, uint32\+\_\+t sync1\+\_\+cycle, int32\+\_\+t sync1\+\_\+shift)
\begin{DoxyCompactList}\small\item\em Configure distributed clocks. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+sdo} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint16\+\_\+t index, uint8\+\_\+t subindex, const uint8\+\_\+t $\ast$data, size\+\_\+t size)
\begin{DoxyCompactList}\small\item\em Add an S\+DO configuration. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+sdo8} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint16\+\_\+t sdo\+\_\+index, uint8\+\_\+t sdo\+\_\+subindex, uint8\+\_\+t value)
\begin{DoxyCompactList}\small\item\em Add a configuration value for an 8-\/bit S\+DO. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+sdo16} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint16\+\_\+t sdo\+\_\+index, uint8\+\_\+t sdo\+\_\+subindex, uint16\+\_\+t value)
\begin{DoxyCompactList}\small\item\em Add a configuration value for a 16-\/bit S\+DO. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+sdo32} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint16\+\_\+t sdo\+\_\+index, uint8\+\_\+t sdo\+\_\+subindex, uint32\+\_\+t value)
\begin{DoxyCompactList}\small\item\em Add a configuration value for a 32-\/bit S\+DO. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+complete\+\_\+sdo} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint16\+\_\+t index, const uint8\+\_\+t $\ast$data, size\+\_\+t size)
\begin{DoxyCompactList}\small\item\em Add configuration data for a complete S\+DO. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+size} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, size\+\_\+t elements)
\begin{DoxyCompactList}\small\item\em Set the size of the CoE emergency ring buffer. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+pop} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint8\+\_\+t $\ast$target)
\begin{DoxyCompactList}\small\item\em Read and remove one record from the CoE emergency ring buffer. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+clear} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc)
\begin{DoxyCompactList}\small\item\em Clears CoE emergency ring buffer and the overrun counter. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+overruns} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc)
\begin{DoxyCompactList}\small\item\em Read the number of CoE emergency overruns. \end{DoxyCompactList}\item 
\textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$ \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+sdo\+\_\+request} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint16\+\_\+t index, uint8\+\_\+t subindex, size\+\_\+t size)
\begin{DoxyCompactList}\small\item\em Create an S\+DO request to exchange S\+D\+Os during realtime operation. \end{DoxyCompactList}\item 
\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$ \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+voe\+\_\+handler} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, size\+\_\+t size)
\begin{DoxyCompactList}\small\item\em Create an VoE handler to exchange vendor-\/specific data during realtime operation. \end{DoxyCompactList}\item 
\textbf{ ec\+\_\+reg\+\_\+request\+\_\+t} $\ast$ \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+reg\+\_\+request} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, size\+\_\+t size)
\begin{DoxyCompactList}\small\item\em Create a register request to exchange Ether\+C\+AT register contents during realtime operation. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+state} (const \textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, \textbf{ ec\+\_\+slave\+\_\+config\+\_\+state\+\_\+t} $\ast$state)
\begin{DoxyCompactList}\small\item\em Outputs the state of the slave configuration. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+slave\+\_\+config\+\_\+idn} (\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$sc, uint8\+\_\+t drive\+\_\+no, uint16\+\_\+t idn, \textbf{ ec\+\_\+al\+\_\+state\+\_\+t} state, const uint8\+\_\+t $\ast$data, size\+\_\+t size)
\begin{DoxyCompactList}\small\item\em Add an SoE I\+DN configuration. \end{DoxyCompactList}\item 
int \textbf{ ecrt\+\_\+domain\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+list} (\textbf{ ec\+\_\+domain\+\_\+t} $\ast$domain, const \textbf{ ec\+\_\+pdo\+\_\+entry\+\_\+reg\+\_\+t} $\ast$pdo\+\_\+entry\+\_\+regs)
\begin{DoxyCompactList}\small\item\em Registers a bunch of P\+DO entries for a domain. \end{DoxyCompactList}\item 
size\+\_\+t \textbf{ ecrt\+\_\+domain\+\_\+size} (const \textbf{ ec\+\_\+domain\+\_\+t} $\ast$domain)
\begin{DoxyCompactList}\small\item\em Returns the current size of the domain\textquotesingle{}s process data. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+domain\+\_\+external\+\_\+memory} (\textbf{ ec\+\_\+domain\+\_\+t} $\ast$domain, uint8\+\_\+t $\ast$memory)
\begin{DoxyCompactList}\small\item\em Provide external memory to store the domain\textquotesingle{}s process data. \end{DoxyCompactList}\item 
uint8\+\_\+t $\ast$ \textbf{ ecrt\+\_\+domain\+\_\+data} (\textbf{ ec\+\_\+domain\+\_\+t} $\ast$domain)
\begin{DoxyCompactList}\small\item\em Returns the domain\textquotesingle{}s process data. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+domain\+\_\+process} (\textbf{ ec\+\_\+domain\+\_\+t} $\ast$domain)
\begin{DoxyCompactList}\small\item\em Determines the states of the domain\textquotesingle{}s datagrams. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+domain\+\_\+queue} (\textbf{ ec\+\_\+domain\+\_\+t} $\ast$domain)
\begin{DoxyCompactList}\small\item\em (Re-\/)queues all domain datagrams in the master\textquotesingle{}s datagram queue. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+domain\+\_\+state} (const \textbf{ ec\+\_\+domain\+\_\+t} $\ast$domain, \textbf{ ec\+\_\+domain\+\_\+state\+\_\+t} $\ast$state)
\begin{DoxyCompactList}\small\item\em Reads the state of a domain. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+sdo\+\_\+request\+\_\+index} (\textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$req, uint16\+\_\+t index, uint8\+\_\+t subindex)
\begin{DoxyCompactList}\small\item\em Set the S\+DO index and subindex. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+sdo\+\_\+request\+\_\+timeout} (\textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$req, uint32\+\_\+t timeout)
\begin{DoxyCompactList}\small\item\em Set the timeout for an S\+DO request. \end{DoxyCompactList}\item 
uint8\+\_\+t $\ast$ \textbf{ ecrt\+\_\+sdo\+\_\+request\+\_\+data} (\textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$req)
\begin{DoxyCompactList}\small\item\em Access to the S\+DO request\textquotesingle{}s data. \end{DoxyCompactList}\item 
size\+\_\+t \textbf{ ecrt\+\_\+sdo\+\_\+request\+\_\+data\+\_\+size} (const \textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$req)
\begin{DoxyCompactList}\small\item\em Returns the current S\+DO data size. \end{DoxyCompactList}\item 
\textbf{ ec\+\_\+request\+\_\+state\+\_\+t} \textbf{ ecrt\+\_\+sdo\+\_\+request\+\_\+state} (const \textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$req)
\begin{DoxyCompactList}\small\item\em Get the current state of the S\+DO request. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+sdo\+\_\+request\+\_\+write} (\textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$req)
\begin{DoxyCompactList}\small\item\em Schedule an S\+DO write operation. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+sdo\+\_\+request\+\_\+read} (\textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$req)
\begin{DoxyCompactList}\small\item\em Schedule an S\+DO read operation. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+voe\+\_\+handler\+\_\+send\+\_\+header} (\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$voe, uint32\+\_\+t vendor\+\_\+id, uint16\+\_\+t vendor\+\_\+type)
\begin{DoxyCompactList}\small\item\em Sets the VoE header for future send operations. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+voe\+\_\+handler\+\_\+received\+\_\+header} (const \textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$voe, uint32\+\_\+t $\ast$vendor\+\_\+id, uint16\+\_\+t $\ast$vendor\+\_\+type)
\begin{DoxyCompactList}\small\item\em Reads the header data of a received VoE message. \end{DoxyCompactList}\item 
uint8\+\_\+t $\ast$ \textbf{ ecrt\+\_\+voe\+\_\+handler\+\_\+data} (\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$voe)
\begin{DoxyCompactList}\small\item\em Access to the VoE handler\textquotesingle{}s data. \end{DoxyCompactList}\item 
size\+\_\+t \textbf{ ecrt\+\_\+voe\+\_\+handler\+\_\+data\+\_\+size} (const \textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$voe)
\begin{DoxyCompactList}\small\item\em Returns the current data size. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+voe\+\_\+handler\+\_\+write} (\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$voe, size\+\_\+t size)
\begin{DoxyCompactList}\small\item\em Start a VoE write operation. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+voe\+\_\+handler\+\_\+read} (\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$voe)
\begin{DoxyCompactList}\small\item\em Start a VoE read operation. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+voe\+\_\+handler\+\_\+read\+\_\+nosync} (\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$voe)
\begin{DoxyCompactList}\small\item\em Start a VoE read operation without querying the sync manager status. \end{DoxyCompactList}\item 
\textbf{ ec\+\_\+request\+\_\+state\+\_\+t} \textbf{ ecrt\+\_\+voe\+\_\+handler\+\_\+execute} (\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$voe)
\begin{DoxyCompactList}\small\item\em Execute the handler. \end{DoxyCompactList}\item 
uint8\+\_\+t $\ast$ \textbf{ ecrt\+\_\+reg\+\_\+request\+\_\+data} (\textbf{ ec\+\_\+reg\+\_\+request\+\_\+t} $\ast$req)
\begin{DoxyCompactList}\small\item\em Access to the register request\textquotesingle{}s data. \end{DoxyCompactList}\item 
\textbf{ ec\+\_\+request\+\_\+state\+\_\+t} \textbf{ ecrt\+\_\+reg\+\_\+request\+\_\+state} (const \textbf{ ec\+\_\+reg\+\_\+request\+\_\+t} $\ast$req)
\begin{DoxyCompactList}\small\item\em Get the current state of the register request. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+reg\+\_\+request\+\_\+write} (\textbf{ ec\+\_\+reg\+\_\+request\+\_\+t} $\ast$req, uint16\+\_\+t address, size\+\_\+t size)
\begin{DoxyCompactList}\small\item\em Schedule an register write operation. \end{DoxyCompactList}\item 
void \textbf{ ecrt\+\_\+reg\+\_\+request\+\_\+read} (\textbf{ ec\+\_\+reg\+\_\+request\+\_\+t} $\ast$req, uint16\+\_\+t address, size\+\_\+t size)
\begin{DoxyCompactList}\small\item\em Schedule a register read operation. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Ether\+C\+AT interface for realtime applications. 

This interface is designed for realtime modules that want to use Ether\+C\+AT. There are functions to request a master, to map process data, to communicate with slaves via CoE and to configure and activate the bus.

Changes in version 1.\+5.\+2\+:


\begin{DoxyItemize}
\item Added redundancy\+\_\+active flag to \doxyref{ec\+\_\+domain\+\_\+state\+\_\+t}{p.}{structec__domain__state__t}.
\item Added \doxyref{ecrt\+\_\+master\+\_\+link\+\_\+state()}{p.}{group__ApplicationInterface_ga90c4d1a88ecc1f3a49ba73dad4efdb14} method and \doxyref{ec\+\_\+master\+\_\+link\+\_\+state\+\_\+t}{p.}{structec__master__link__state__t} to query the state of a redundant link.
\item Added the E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+D\+U\+N\+D\+A\+N\+CY define, to check, if the interface contains redundancy features.
\item Added \doxyref{ecrt\+\_\+sdo\+\_\+request\+\_\+index()}{p.}{group__ApplicationInterface_gae002eb267f69d91de0c83a5f4f349372} to change S\+DO index and subindex after handler creation.
\item Added interface for retrieving CoE emergency messages, i. e. \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+size()}{p.}{group__ApplicationInterface_gae2540078423afe6763c5b7a2554f30bf}, \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+pop()}{p.}{group__ApplicationInterface_ga6b58a60d15afe8bab546a766653f227f}, \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+clear()}{p.}{group__ApplicationInterface_gad61c6ab7adf19f18953f34c8132c30a7}, \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+overruns()}{p.}{group__ApplicationInterface_gad47666902ef543c1233a8fafcaa9e321} and the defines E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+CY and E\+C\+\_\+\+C\+O\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+C\+Y\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE.
\item Added interface for direct Ether\+C\+AT register access\+: Added data type ec\+\_\+reg\+\_\+request\+\_\+t and methods \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+reg\+\_\+request()}{p.}{group__ApplicationInterface_ga1805e57c39e7bb12840c5e2589021dbe}, \doxyref{ecrt\+\_\+reg\+\_\+request\+\_\+data()}{p.}{group__ApplicationInterface_gaecfbefc3410396bd5ca5f14c489ea838}, \doxyref{ecrt\+\_\+reg\+\_\+request\+\_\+state()}{p.}{group__ApplicationInterface_gac7fc3bbec83497a78b7b075e41eb26e4}, \doxyref{ecrt\+\_\+reg\+\_\+request\+\_\+write()}{p.}{group__ApplicationInterface_ga3c12de18886ffb7aaeb7ac364a7f2034}, \doxyref{ecrt\+\_\+reg\+\_\+request\+\_\+read()}{p.}{group__ApplicationInterface_gad8da153df44d98812c897c56cabe1e84} and the feature flag E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+G\+\_\+\+A\+C\+C\+E\+SS.
\item Added method to select the reference clock, \doxyref{ecrt\+\_\+master\+\_\+select\+\_\+reference\+\_\+clock()}{p.}{group__ApplicationInterface_ga31983aeee279fc5acaf5f7a0bb403160} and the feature flag E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+S\+E\+L\+E\+C\+T\+\_\+\+R\+E\+F\+\_\+\+C\+L\+O\+CK to check, if the method is available.
\item Added method to get the reference clock time, \doxyref{ecrt\+\_\+master\+\_\+reference\+\_\+clock\+\_\+time()}{p.}{group__ApplicationInterface_gaefb582f13442ef8b770fd308b8de949c} and the feature flag E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+F\+\_\+\+C\+L\+O\+C\+K\+\_\+\+T\+I\+ME to have the possibility to synchronize the master clock to the reference clock.
\item Changed the data types of the shift times in \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+dc()}{p.}{group__ApplicationInterface_ga05858fdb5052dfb1161a81d2f8beb553} to int32\+\_\+t to correctly display negative shift times.
\item Added \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+pos()}{p.}{group__ApplicationInterface_ga757fd3d421f1ded8ee310c4698afb8ba} and the feature flag E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+G\+\_\+\+B\+Y\+\_\+\+P\+OS for registering P\+DO entries with non-\/unique indices via their positions in the mapping.
\end{DoxyItemize}

Changes in version 1.\+5\+:


\begin{DoxyItemize}
\item Added the distributed clocks feature and the respective method \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+dc()}{p.}{group__ApplicationInterface_ga05858fdb5052dfb1161a81d2f8beb553} to configure a slave for cyclic operation, and \doxyref{ecrt\+\_\+master\+\_\+application\+\_\+time()}{p.}{group__ApplicationInterface_ga567ccc15f09d5722fd6269f297b72a58}, \doxyref{ecrt\+\_\+master\+\_\+sync\+\_\+reference\+\_\+clock()}{p.}{group__ApplicationInterface_gabdc6735565f209d8ab8473f34617a526} and \doxyref{ecrt\+\_\+master\+\_\+sync\+\_\+slave\+\_\+clocks()}{p.}{group__ApplicationInterface_gadb8b8f705803689e789f022b01eb8deb} for offset and drift compensation. The \doxyref{E\+C\+\_\+\+T\+I\+M\+E\+V\+A\+L2\+N\+A\+N\+O()}{p.}{group__ApplicationInterface_gaeffbc7820c2e642aee02c92729d4411c} macro can be used for epoch time conversion, while the \doxyref{ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+queue()}{p.}{group__ApplicationInterface_ga3df6e34876cbad6e3e2a4d51ec1ba812} and \doxyref{ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+process()}{p.}{group__ApplicationInterface_ga0a0b4bef9b058f9a7752878f7c07cdf3} methods can be used to monitor the synchrony.
\item Improved the callback mechanism. \doxyref{ecrt\+\_\+master\+\_\+callbacks()}{p.}{group__ApplicationInterface_ga644db1b4181bfe2943bb8fa81bd027f7} now takes two callback functions for sending and receiving datagrams. \doxyref{ecrt\+\_\+master\+\_\+send\+\_\+ext()}{p.}{group__ApplicationInterface_ga62360cb642f555269d64df1111f6c771} is used to execute the sending of non-\/application datagrams.
\item Added watchdog configuration (method \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+watchdog()}{p.}{group__ApplicationInterface_gaba67c3e575110297f9fdcffad573d367}, \doxyref{ec\+\_\+watchdog\+\_\+mode\+\_\+t}{p.}{group__ApplicationInterface_gaa31bcc2beed6a1f62ec495337c239177}, {\itshape watchdog\+\_\+mode} parameter in \doxyref{ec\+\_\+sync\+\_\+info\+\_\+t}{p.}{structec__sync__info__t} and \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+sync\+\_\+manager()}{p.}{group__ApplicationInterface_ga4ac6eae111bdbf1d4cd09fa2f965a887}).
\item Added \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+complete\+\_\+sdo()}{p.}{group__ApplicationInterface_ga4231948c36c707fd5bc95e2e813ff7af} method to download an S\+DO during configuration via Complete\+Access.
\item Added \doxyref{ecrt\+\_\+master\+\_\+deactivate()}{p.}{group__ApplicationInterface_ga46b3fe78742ddf929b624103432ec4dd} to remove the bus configuration.
\item Added ecrt\+\_\+open\+\_\+master() and ecrt\+\_\+master\+\_\+reserve() separation for userspace.
\item Added bus information interface (methods \doxyref{ecrt\+\_\+master()}{p.}{group__ApplicationInterface_gaefdb3b2d46b945fa6ebd65c4c5f16b8b}, \doxyref{ecrt\+\_\+master\+\_\+get\+\_\+slave()}{p.}{group__ApplicationInterface_ga8a1a9398f7c1e17e4da8243fe03a7a80}, ecrt\+\_\+master\+\_\+get\+\_\+sync\+\_\+manager(), ecrt\+\_\+master\+\_\+get\+\_\+pdo() and ecrt\+\_\+master\+\_\+get\+\_\+pdo\+\_\+entry()) to get information about the currently connected slaves and the P\+DO entries provided.
\item Added \doxyref{ecrt\+\_\+master\+\_\+sdo\+\_\+download()}{p.}{group__ApplicationInterface_ga52ec1296b7c6c21e86b906ef4edc6208}, \doxyref{ecrt\+\_\+master\+\_\+sdo\+\_\+download\+\_\+complete()}{p.}{group__ApplicationInterface_ga357ce803ce5e7a8e59f14bf3eaf11439} and \doxyref{ecrt\+\_\+master\+\_\+sdo\+\_\+upload()}{p.}{group__ApplicationInterface_ga8d6d538e803530ac104c9bf2d37a24c4} methods to let an application transfer S\+D\+Os before activating the master.
\item Changed the meaning of the negative return values of \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry()}{p.}{group__ApplicationInterface_ga44fe6bd549328c34ca4ed6893765206f} and ecrt\+\_\+slave\+\_\+config\+\_\+sdo$\ast$().
\item Implemented the Vendor-\/specific over Ether\+C\+AT mailbox protocol. See \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+voe\+\_\+handler()}{p.}{group__ApplicationInterface_ga6341627f6bf764312dd6e8c3140e9be1}.
\item Renamed ec\+\_\+sdo\+\_\+request\+\_\+state\+\_\+t to \doxyref{ec\+\_\+request\+\_\+state\+\_\+t}{p.}{group__ApplicationInterface_gae94149f829f04960c62d63764a7779df}, because it is also used by VoE handlers.
\item Removed \textquotesingle{}const\textquotesingle{} from argument of \doxyref{ecrt\+\_\+sdo\+\_\+request\+\_\+state()}{p.}{group__ApplicationInterface_ga78d910487f583e333cdf978b4f12c3c1}, because the userspace library has to modify object internals.
\item Added 64-\/bit data access macros.
\item Added \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+idn()}{p.}{group__ApplicationInterface_gaa3d42e8188c64eaf794e8dc91a61b60b} method for storing SoE I\+DN configurations, and \doxyref{ecrt\+\_\+master\+\_\+read\+\_\+idn()}{p.}{group__ApplicationInterface_gacd875ea0739ebb3524269070d9357c4b} and \doxyref{ecrt\+\_\+master\+\_\+write\+\_\+idn()}{p.}{group__ApplicationInterface_ga5ddd58b7a66b774b6037edbc50c73293} to read/write I\+D\+Ns ad-\/hoc via the user-\/space library.
\item Added \doxyref{ecrt\+\_\+master\+\_\+reset()}{p.}{group__ApplicationInterface_gab6455adf50e074c51894113adb49e00c} to initiate retrying to configure slaves. 
\end{DoxyItemize}

\subsection{Macro Definition Documentation}
\mbox{\label{group__ApplicationInterface_gac7ba64ff07a3e390c4290f4ffb4b8512}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+D\+U\+N\+D\+A\+N\+CY@{E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+D\+U\+N\+D\+A\+N\+CY}}
\index{E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+D\+U\+N\+D\+A\+N\+CY@{E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+D\+U\+N\+D\+A\+N\+CY}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+D\+U\+N\+D\+A\+N\+CY}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+D\+U\+N\+D\+A\+N\+CY}



Defined, if the redundancy features are available. 

I. e. if the {\itshape redundancy\+\_\+active} flag in \doxyref{ec\+\_\+domain\+\_\+state\+\_\+t}{p.}{structec__domain__state__t} and the \doxyref{ecrt\+\_\+master\+\_\+link\+\_\+state()}{p.}{group__ApplicationInterface_ga90c4d1a88ecc1f3a49ba73dad4efdb14} method are available. 

Definition at line 162 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga496883570b15e30ceb5005a5834f8577}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+CY@{E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+CY}}
\index{E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+CY@{E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+CY}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+CY}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+CY}



Defined, if the CoE emergency ring feature is available. 

I. e. if the ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+$\ast$() methods are available. 

Definition at line 168 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gaf1c03a9ed2467c2301e311854dc93718}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+G\+\_\+\+A\+C\+C\+E\+SS@{E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+G\+\_\+\+A\+C\+C\+E\+SS}}
\index{E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+G\+\_\+\+A\+C\+C\+E\+SS@{E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+G\+\_\+\+A\+C\+C\+E\+SS}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+G\+\_\+\+A\+C\+C\+E\+SS}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+H\+A\+V\+E\+\_\+\+R\+E\+G\+\_\+\+A\+C\+C\+E\+SS}



Defined, if the register access interface is available. 

I. e. if the methods \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+reg\+\_\+request()}{p.}{group__ApplicationInterface_ga1805e57c39e7bb12840c5e2589021dbe}, \doxyref{ecrt\+\_\+reg\+\_\+request\+\_\+data()}{p.}{group__ApplicationInterface_gaecfbefc3410396bd5ca5f14c489ea838}, \doxyref{ecrt\+\_\+reg\+\_\+request\+\_\+state()}{p.}{group__ApplicationInterface_gac7fc3bbec83497a78b7b075e41eb26e4}, \doxyref{ecrt\+\_\+reg\+\_\+request\+\_\+write()}{p.}{group__ApplicationInterface_ga3c12de18886ffb7aaeb7ac364a7f2034} and \doxyref{ecrt\+\_\+reg\+\_\+request\+\_\+read()}{p.}{group__ApplicationInterface_gad8da153df44d98812c897c56cabe1e84} are available. 

Definition at line 176 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gab2c6b7c61e0a7e07671003c1954d92ee}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+E\+ND@{E\+C\+\_\+\+E\+ND}}
\index{E\+C\+\_\+\+E\+ND@{E\+C\+\_\+\+E\+ND}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+E\+ND}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+E\+ND~$\sim$0U}



End of list marker. 

This can be used with \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+pdos()}{p.}{group__ApplicationInterface_ga7bc2683699a5c0c551f0cfdc90c1a559}. 

Definition at line 196 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gad1811128dd257dd7f5bb7a11724a638e}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+M\+A\+X\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+L\+E\+N\+G\+TH@{E\+C\+\_\+\+M\+A\+X\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+L\+E\+N\+G\+TH}}
\index{E\+C\+\_\+\+M\+A\+X\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+L\+E\+N\+G\+TH@{E\+C\+\_\+\+M\+A\+X\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+L\+E\+N\+G\+TH}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+M\+A\+X\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+L\+E\+N\+G\+TH}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+M\+A\+X\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+L\+E\+N\+G\+TH~64}



Maximum string length. 

Used in \doxyref{ec\+\_\+slave\+\_\+info\+\_\+t}{p.}{structec__slave__info__t}. 

Definition at line 206 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga1982934cef716e45eefeba57c9d6e3ff}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+M\+A\+X\+\_\+\+P\+O\+R\+TS@{E\+C\+\_\+\+M\+A\+X\+\_\+\+P\+O\+R\+TS}}
\index{E\+C\+\_\+\+M\+A\+X\+\_\+\+P\+O\+R\+TS@{E\+C\+\_\+\+M\+A\+X\+\_\+\+P\+O\+R\+TS}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+M\+A\+X\+\_\+\+P\+O\+R\+TS}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+M\+A\+X\+\_\+\+P\+O\+R\+TS~4}



Maximum number of slave ports. 



Definition at line 209 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gaeffbc7820c2e642aee02c92729d4411c}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+T\+I\+M\+E\+V\+A\+L2\+N\+A\+NO@{E\+C\+\_\+\+T\+I\+M\+E\+V\+A\+L2\+N\+A\+NO}}
\index{E\+C\+\_\+\+T\+I\+M\+E\+V\+A\+L2\+N\+A\+NO@{E\+C\+\_\+\+T\+I\+M\+E\+V\+A\+L2\+N\+A\+NO}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+T\+I\+M\+E\+V\+A\+L2\+N\+A\+NO}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+T\+I\+M\+E\+V\+A\+L2\+N\+A\+NO(\begin{DoxyParamCaption}\item[{}]{TV }\end{DoxyParamCaption})~(((TV).tv\+\_\+sec -\/ 946684800\+U\+L\+L) $\ast$ 1000000000\+U\+L\+L + (\+T\+V).\+tv\+\_\+usec $\ast$ 1000\+U\+L\+L)}



Timeval to nanoseconds conversion. 

This macro converts a Unix epoch time to Ether\+C\+AT DC time.

\begin{DoxySeeAlso}{See also}
void \doxyref{ecrt\+\_\+master\+\_\+application\+\_\+time()}{p.}{group__ApplicationInterface_ga567ccc15f09d5722fd6269f297b72a58}
\end{DoxySeeAlso}

\begin{DoxyParams}{Parameters}
{\em TV} & struct timeval containing epoch time. \\
\hline
\end{DoxyParams}


Definition at line 219 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga1395ca6654aae4222bc89b73e6ebfa66}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+C\+O\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+C\+Y\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE@{E\+C\+\_\+\+C\+O\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+C\+Y\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE}}
\index{E\+C\+\_\+\+C\+O\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+C\+Y\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE@{E\+C\+\_\+\+C\+O\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+C\+Y\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+C\+O\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+C\+Y\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+C\+O\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+C\+Y\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE~8}



Size of a CoE emergency message in byte. 

\begin{DoxySeeAlso}{See also}
\doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+pop()}{p.}{group__ApplicationInterface_ga6b58a60d15afe8bab546a766653f227f}. 
\end{DoxySeeAlso}


Definition at line 226 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga45bf3a61139e93c31b442b25d958e8a0}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+B\+IT@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+B\+IT}}
\index{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+B\+IT@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+B\+IT}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+B\+IT}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+B\+IT(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA,  }\item[{}]{P\+OS }\end{DoxyParamCaption})~(($\ast$((uint8\+\_\+t $\ast$) (D\+A\+TA)) $>$$>$ (P\+OS)) \& 0x01)}



Read a certain bit of an Ether\+C\+AT data byte. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
{\em P\+OS} & bit position \\
\hline
\end{DoxyParams}


Definition at line 2042 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gad34ea4baad01f48e2fe114624c994ae2}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+B\+IT@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+B\+IT}}
\index{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+B\+IT@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+B\+IT}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+B\+IT}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+B\+IT(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA,  }\item[{}]{P\+OS,  }\item[{}]{V\+AL }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{ \(\backslash\)
        if (VAL) *((uint8\_t *) (DATA)) |=  (1 << (POS)); \(\backslash\)
        else     *((uint8\_t *) (DATA)) &= ~(1 << (POS)); \(\backslash\)
    \} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}


Write a certain bit of an Ether\+C\+AT data byte. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
{\em P\+OS} & bit position \\
\hline
{\em V\+AL} & new bit value \\
\hline
\end{DoxyParams}


Definition at line 2050 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gabfd606064b98475fc6cbe52aea6b5133}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U8@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U8}}
\index{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U8@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U8}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U8}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U8(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA }\end{DoxyParamCaption})~((uint8\+\_\+t) $\ast$((uint8\+\_\+t $\ast$) (D\+A\+TA)))}



Read an 8-\/bit unsigned value from Ether\+C\+AT data. 

\begin{DoxyReturn}{Returns}
Ether\+C\+AT data value 
\end{DoxyReturn}


Definition at line 2119 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga9fe458e3d365a499db3a93e72164a2f6}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S8@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S8}}
\index{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S8@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S8}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S8}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S8(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA }\end{DoxyParamCaption})~((int8\+\_\+t) $\ast$((uint8\+\_\+t $\ast$) (D\+A\+TA)))}



Read an 8-\/bit signed value from Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Ether\+C\+AT data value 
\end{DoxyReturn}


Definition at line 2127 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gaa78148947379983986940d1980ac3db1}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U16@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U16}}
\index{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U16@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U16}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U16}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U16(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA }\end{DoxyParamCaption})~((uint16\+\_\+t) le16\+\_\+to\+\_\+cpup((void $\ast$) (D\+A\+TA)))}



Read a 16-\/bit unsigned value from Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Ether\+C\+AT data value 
\end{DoxyReturn}


Definition at line 2135 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga390de258c11aac1db1dba2444a69ddc3}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S16@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S16}}
\index{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S16@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S16}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S16}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S16(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA }\end{DoxyParamCaption})~((int16\+\_\+t) le16\+\_\+to\+\_\+cpup((void $\ast$) (D\+A\+TA)))}



Read a 16-\/bit signed value from Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Ether\+C\+AT data value 
\end{DoxyReturn}


Definition at line 2143 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gaca608a732bed6f11ddfdf073e8c3a80d}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U32@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U32}}
\index{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U32@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U32}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U32}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U32(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA }\end{DoxyParamCaption})~((uint32\+\_\+t) le32\+\_\+to\+\_\+cpup((void $\ast$) (D\+A\+TA)))}



Read a 32-\/bit unsigned value from Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Ether\+C\+AT data value 
\end{DoxyReturn}


Definition at line 2151 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga0ba3560f47cd32bcb5842a4a21f1457d}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S32@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S32}}
\index{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S32@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S32}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S32}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S32(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA }\end{DoxyParamCaption})~((int32\+\_\+t) le32\+\_\+to\+\_\+cpup((void $\ast$) (D\+A\+TA)))}



Read a 32-\/bit signed value from Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Ether\+C\+AT data value 
\end{DoxyReturn}


Definition at line 2159 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gab91748e9aa6003a8f814169c90e90182}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U64@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U64}}
\index{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U64@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U64}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U64}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+U64(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA }\end{DoxyParamCaption})~((uint64\+\_\+t) le64\+\_\+to\+\_\+cpup((void $\ast$) (D\+A\+TA)))}



Read a 64-\/bit unsigned value from Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Ether\+C\+AT data value 
\end{DoxyReturn}


Definition at line 2167 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gac19a77ff73490a105e72552c357136ed}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S64@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S64}}
\index{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S64@{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S64}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S64}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+R\+E\+A\+D\+\_\+\+S64(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA }\end{DoxyParamCaption})~((int64\+\_\+t) le64\+\_\+to\+\_\+cpup((void $\ast$) (D\+A\+TA)))}



Read a 64-\/bit signed value from Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Ether\+C\+AT data value 
\end{DoxyReturn}


Definition at line 2175 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga42e7df5376954bc1cf1dde11fbf17387}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U8@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U8}}
\index{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U8@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U8}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U8}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U8(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA,  }\item[{}]{V\+AL }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{ \(\backslash\)
        *((uint8\_t *)(DATA)) = ((uint8\_t) (VAL)); \(\backslash\)
    \} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}


Write an 8-\/bit unsigned value to Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
{\em V\+AL} & new value \\
\hline
\end{DoxyParams}


Definition at line 2187 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga9bae1ebdd914c235c1178fe8eee19aa7}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S8@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S8}}
\index{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S8@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S8}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S8}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S8(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA,  }\item[{}]{V\+AL }\end{DoxyParamCaption})~\textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U8}(D\+A\+TA, V\+AL)}



Write an 8-\/bit signed value to Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
{\em V\+AL} & new value \\
\hline
\end{DoxyParams}


Definition at line 2197 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gace219530ddd83f5f3f54d5b329b94a3d}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U16@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U16}}
\index{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U16@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U16}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U16}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U16(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA,  }\item[{}]{V\+AL }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{ \(\backslash\)
        *((uint16\_t *) (DATA)) = cpu\_to\_le16((uint16\_t) (VAL)); \(\backslash\)
    \} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}


Write a 16-\/bit unsigned value to Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
{\em V\+AL} & new value \\
\hline
\end{DoxyParams}


Definition at line 2204 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gaef851d843ec4ba3fd6109185d56946fc}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S16@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S16}}
\index{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S16@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S16}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S16}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S16(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA,  }\item[{}]{V\+AL }\end{DoxyParamCaption})~\textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U16}(D\+A\+TA, V\+AL)}



Write a 16-\/bit signed value to Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
{\em V\+AL} & new value \\
\hline
\end{DoxyParams}


Definition at line 2214 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga9558cb79cc4015da0a551704649d1e80}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U32@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U32}}
\index{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U32@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U32}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U32}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U32(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA,  }\item[{}]{V\+AL }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{ \(\backslash\)
        *((uint32\_t *) (DATA)) = cpu\_to\_le32((uint32\_t) (VAL)); \(\backslash\)
    \} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}


Write a 32-\/bit unsigned value to Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
{\em V\+AL} & new value \\
\hline
\end{DoxyParams}


Definition at line 2221 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga233dd5af48da2bc1b1d1374851fac018}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S32@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S32}}
\index{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S32@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S32}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S32}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S32(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA,  }\item[{}]{V\+AL }\end{DoxyParamCaption})~\textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U32}(D\+A\+TA, V\+AL)}



Write a 32-\/bit signed value to Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
{\em V\+AL} & new value \\
\hline
\end{DoxyParams}


Definition at line 2231 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gac2186e4bce70f3ba61c76fe5d1ddd2a6}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U64@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U64}}
\index{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U64@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U64}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U64}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U64(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA,  }\item[{}]{V\+AL }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{ \(\backslash\)
        *((uint64\_t *) (DATA)) = cpu\_to\_le64((uint64\_t) (VAL)); \(\backslash\)
    \} \textcolor{keywordflow}{while} (0)
\end{DoxyCode}


Write a 64-\/bit unsigned value to Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
{\em V\+AL} & new value \\
\hline
\end{DoxyParams}


Definition at line 2238 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga228f4a47ddfa63828ea55837b30173bb}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S64@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S64}}
\index{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S64@{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S64}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S64}
{\footnotesize\ttfamily \#define E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+S64(\begin{DoxyParamCaption}\item[{}]{D\+A\+TA,  }\item[{}]{V\+AL }\end{DoxyParamCaption})~\textbf{ E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+\+U64}(D\+A\+TA, V\+AL)}



Write a 64-\/bit signed value to Ether\+C\+AT data. 


\begin{DoxyParams}{Parameters}
{\em D\+A\+TA} & Ether\+C\+AT data pointer \\
\hline
{\em V\+AL} & new value \\
\hline
\end{DoxyParams}


Definition at line 2248 of file ecrt.\+h.



\subsection{Typedef Documentation}
\mbox{\label{group__ApplicationInterface_ga60ec31b46fcf7994c511359402c64baa}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ec\+\_\+master\+\_\+t@{ec\+\_\+master\+\_\+t}}
\index{ec\+\_\+master\+\_\+t@{ec\+\_\+master\+\_\+t}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ec\+\_\+master\+\_\+t}
{\footnotesize\ttfamily typedef struct \textbf{ ec\+\_\+master} \textbf{ ec\+\_\+master\+\_\+t}}

\begin{DoxySeeAlso}{See also}
\doxyref{ec\+\_\+master}{p.}{structec__master} 
\end{DoxySeeAlso}


Definition at line 233 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga81f6717d9d4157df53b863e5ee3b04a4}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ec\+\_\+slave\+\_\+config\+\_\+t@{ec\+\_\+slave\+\_\+config\+\_\+t}}
\index{ec\+\_\+slave\+\_\+config\+\_\+t@{ec\+\_\+slave\+\_\+config\+\_\+t}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ec\+\_\+slave\+\_\+config\+\_\+t}
{\footnotesize\ttfamily typedef struct \textbf{ ec\+\_\+slave\+\_\+config} \textbf{ ec\+\_\+slave\+\_\+config\+\_\+t}}

\begin{DoxySeeAlso}{See also}
\doxyref{ec\+\_\+slave\+\_\+config}{p.}{structec__slave__config} 
\end{DoxySeeAlso}


Definition at line 236 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga80023c0c77cb39ae1cd70c9d8e5269fc}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ec\+\_\+domain\+\_\+t@{ec\+\_\+domain\+\_\+t}}
\index{ec\+\_\+domain\+\_\+t@{ec\+\_\+domain\+\_\+t}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ec\+\_\+domain\+\_\+t}
{\footnotesize\ttfamily typedef struct \textbf{ ec\+\_\+domain} \textbf{ ec\+\_\+domain\+\_\+t}}

\begin{DoxySeeAlso}{See also}
\doxyref{ec\+\_\+domain}{p.}{structec__domain} 
\end{DoxySeeAlso}


Definition at line 239 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga557aaf4c32cb56eee5e76fb6063628db}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ec\+\_\+sdo\+\_\+request\+\_\+t@{ec\+\_\+sdo\+\_\+request\+\_\+t}}
\index{ec\+\_\+sdo\+\_\+request\+\_\+t@{ec\+\_\+sdo\+\_\+request\+\_\+t}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ec\+\_\+sdo\+\_\+request\+\_\+t}
{\footnotesize\ttfamily typedef struct \textbf{ ec\+\_\+sdo\+\_\+request} \textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t}}

\begin{DoxySeeAlso}{See also}
\doxyref{ec\+\_\+sdo\+\_\+request}{p.}{structec__sdo__request}. 
\end{DoxySeeAlso}


Definition at line 242 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga498dd422118de7095af5287ef9a6eed1}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ec\+\_\+voe\+\_\+handler\+\_\+t@{ec\+\_\+voe\+\_\+handler\+\_\+t}}
\index{ec\+\_\+voe\+\_\+handler\+\_\+t@{ec\+\_\+voe\+\_\+handler\+\_\+t}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ec\+\_\+voe\+\_\+handler\+\_\+t}
{\footnotesize\ttfamily typedef struct \textbf{ ec\+\_\+voe\+\_\+handler} \textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t}}

\begin{DoxySeeAlso}{See also}
\doxyref{ec\+\_\+voe\+\_\+handler}{p.}{structec__voe__handler}. 
\end{DoxySeeAlso}


Definition at line 245 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga85a829c5133104f0d21f9e6684201d79}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ec\+\_\+reg\+\_\+request\+\_\+t@{ec\+\_\+reg\+\_\+request\+\_\+t}}
\index{ec\+\_\+reg\+\_\+request\+\_\+t@{ec\+\_\+reg\+\_\+request\+\_\+t}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ec\+\_\+reg\+\_\+request\+\_\+t}
{\footnotesize\ttfamily typedef struct \textbf{ ec\+\_\+reg\+\_\+request} \textbf{ ec\+\_\+reg\+\_\+request\+\_\+t}}

\begin{DoxySeeAlso}{See also}
\doxyref{ec\+\_\+sdo\+\_\+request}{p.}{structec__sdo__request}. 
\end{DoxySeeAlso}


Definition at line 248 of file ecrt.\+h.



\subsection{Enumeration Type Documentation}
\mbox{\label{group__ApplicationInterface_ga15640cfae27efdf73d687ea4f9a03338}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ec\+\_\+slave\+\_\+port\+\_\+desc\+\_\+t@{ec\+\_\+slave\+\_\+port\+\_\+desc\+\_\+t}}
\index{ec\+\_\+slave\+\_\+port\+\_\+desc\+\_\+t@{ec\+\_\+slave\+\_\+port\+\_\+desc\+\_\+t}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ec\+\_\+slave\+\_\+port\+\_\+desc\+\_\+t}
{\footnotesize\ttfamily enum \textbf{ ec\+\_\+slave\+\_\+port\+\_\+desc\+\_\+t}}



Ether\+C\+AT slave port descriptor. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+N\+O\+T\+\_\+\+I\+M\+P\+L\+E\+M\+E\+N\+T\+ED@{E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+N\+O\+T\+\_\+\+I\+M\+P\+L\+E\+M\+E\+N\+T\+ED}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+N\+O\+T\+\_\+\+I\+M\+P\+L\+E\+M\+E\+N\+T\+ED@{E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+N\+O\+T\+\_\+\+I\+M\+P\+L\+E\+M\+E\+N\+T\+ED}}}\mbox{\label{group__ApplicationInterface_gga15640cfae27efdf73d687ea4f9a03338a714b71ad4e085ce97f819853779e6c82}} 
E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+N\+O\+T\+\_\+\+I\+M\+P\+L\+E\+M\+E\+N\+T\+ED&Port is not implemented. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+N\+O\+T\+\_\+\+C\+O\+N\+F\+I\+G\+U\+R\+ED@{E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+N\+O\+T\+\_\+\+C\+O\+N\+F\+I\+G\+U\+R\+ED}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+N\+O\+T\+\_\+\+C\+O\+N\+F\+I\+G\+U\+R\+ED@{E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+N\+O\+T\+\_\+\+C\+O\+N\+F\+I\+G\+U\+R\+ED}}}\mbox{\label{group__ApplicationInterface_gga15640cfae27efdf73d687ea4f9a03338a696e2f14e40660b267334b44aa529bb6}} 
E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+N\+O\+T\+\_\+\+C\+O\+N\+F\+I\+G\+U\+R\+ED&Port is not configured. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+E\+B\+US@{E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+E\+B\+US}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+E\+B\+US@{E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+E\+B\+US}}}\mbox{\label{group__ApplicationInterface_gga15640cfae27efdf73d687ea4f9a03338ac06e10ab39eb8c7585e6b3e85aa901b2}} 
E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+E\+B\+US&Port is an E-\/\+Bus. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+M\+II@{E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+M\+II}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+M\+II@{E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+M\+II}}}\mbox{\label{group__ApplicationInterface_gga15640cfae27efdf73d687ea4f9a03338a0a5db996018465752d5f6d5bc1caad39}} 
E\+C\+\_\+\+P\+O\+R\+T\+\_\+\+M\+II&Port is a M\+II. \\
\hline

\end{DoxyEnumFields}


Definition at line 339 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga00daf142097ba5eb8b58b996a8a730af}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ec\+\_\+wc\+\_\+state\+\_\+t@{ec\+\_\+wc\+\_\+state\+\_\+t}}
\index{ec\+\_\+wc\+\_\+state\+\_\+t@{ec\+\_\+wc\+\_\+state\+\_\+t}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ec\+\_\+wc\+\_\+state\+\_\+t}
{\footnotesize\ttfamily enum \textbf{ ec\+\_\+wc\+\_\+state\+\_\+t}}



Domain working counter interpretation. 

This is used in \doxyref{ec\+\_\+domain\+\_\+state\+\_\+t}{p.}{structec__domain__state__t}. \begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+W\+C\+\_\+\+Z\+E\+RO@{E\+C\+\_\+\+W\+C\+\_\+\+Z\+E\+RO}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+C\+\_\+\+Z\+E\+RO@{E\+C\+\_\+\+W\+C\+\_\+\+Z\+E\+RO}}}\mbox{\label{group__ApplicationInterface_gga00daf142097ba5eb8b58b996a8a730afa8dff19321b05e9aed5ffc41c25ea3de2}} 
E\+C\+\_\+\+W\+C\+\_\+\+Z\+E\+RO&No registered process data were exchanged. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+W\+C\+\_\+\+I\+N\+C\+O\+M\+P\+L\+E\+TE@{E\+C\+\_\+\+W\+C\+\_\+\+I\+N\+C\+O\+M\+P\+L\+E\+TE}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+C\+\_\+\+I\+N\+C\+O\+M\+P\+L\+E\+TE@{E\+C\+\_\+\+W\+C\+\_\+\+I\+N\+C\+O\+M\+P\+L\+E\+TE}}}\mbox{\label{group__ApplicationInterface_gga00daf142097ba5eb8b58b996a8a730afaef084e88705396b87feea4e9dca38c22}} 
E\+C\+\_\+\+W\+C\+\_\+\+I\+N\+C\+O\+M\+P\+L\+E\+TE&Some of the registered process data were exchanged. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+W\+C\+\_\+\+C\+O\+M\+P\+L\+E\+TE@{E\+C\+\_\+\+W\+C\+\_\+\+C\+O\+M\+P\+L\+E\+TE}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+C\+\_\+\+C\+O\+M\+P\+L\+E\+TE@{E\+C\+\_\+\+W\+C\+\_\+\+C\+O\+M\+P\+L\+E\+TE}}}\mbox{\label{group__ApplicationInterface_gga00daf142097ba5eb8b58b996a8a730afa46aaefd30aadeede4109b23491d0077f}} 
E\+C\+\_\+\+W\+C\+\_\+\+C\+O\+M\+P\+L\+E\+TE&All registered process data were exchanged. \\
\hline

\end{DoxyEnumFields}


Definition at line 394 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga703c4e47384b3601e7605d6d910aaba1}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ec\+\_\+direction\+\_\+t@{ec\+\_\+direction\+\_\+t}}
\index{ec\+\_\+direction\+\_\+t@{ec\+\_\+direction\+\_\+t}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ec\+\_\+direction\+\_\+t}
{\footnotesize\ttfamily enum \textbf{ ec\+\_\+direction\+\_\+t}}



Direction type for P\+DO assignment functions. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+D\+I\+R\+\_\+\+I\+N\+V\+A\+L\+ID@{E\+C\+\_\+\+D\+I\+R\+\_\+\+I\+N\+V\+A\+L\+ID}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+D\+I\+R\+\_\+\+I\+N\+V\+A\+L\+ID@{E\+C\+\_\+\+D\+I\+R\+\_\+\+I\+N\+V\+A\+L\+ID}}}\mbox{\label{group__ApplicationInterface_gga703c4e47384b3601e7605d6d910aaba1a1d65420e76eb63b731b1148054c40054}} 
E\+C\+\_\+\+D\+I\+R\+\_\+\+I\+N\+V\+A\+L\+ID&Invalid direction. Do not use this value. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+D\+I\+R\+\_\+\+O\+U\+T\+P\+UT@{E\+C\+\_\+\+D\+I\+R\+\_\+\+O\+U\+T\+P\+UT}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+D\+I\+R\+\_\+\+O\+U\+T\+P\+UT@{E\+C\+\_\+\+D\+I\+R\+\_\+\+O\+U\+T\+P\+UT}}}\mbox{\label{group__ApplicationInterface_gga703c4e47384b3601e7605d6d910aaba1aebf26f1d5c09cf002af5b09d9cb59b78}} 
E\+C\+\_\+\+D\+I\+R\+\_\+\+O\+U\+T\+P\+UT&Values written by the master. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+D\+I\+R\+\_\+\+I\+N\+P\+UT@{E\+C\+\_\+\+D\+I\+R\+\_\+\+I\+N\+P\+UT}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+D\+I\+R\+\_\+\+I\+N\+P\+UT@{E\+C\+\_\+\+D\+I\+R\+\_\+\+I\+N\+P\+UT}}}\mbox{\label{group__ApplicationInterface_gga703c4e47384b3601e7605d6d910aaba1a6b3c6b53010076d846724fec434512e4}} 
E\+C\+\_\+\+D\+I\+R\+\_\+\+I\+N\+P\+UT&Values read by the master. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+D\+I\+R\+\_\+\+C\+O\+U\+NT@{E\+C\+\_\+\+D\+I\+R\+\_\+\+C\+O\+U\+NT}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+D\+I\+R\+\_\+\+C\+O\+U\+NT@{E\+C\+\_\+\+D\+I\+R\+\_\+\+C\+O\+U\+NT}}}\mbox{\label{group__ApplicationInterface_gga703c4e47384b3601e7605d6d910aaba1a4e496ac3681435d672c73b2198b5ca4d}} 
E\+C\+\_\+\+D\+I\+R\+\_\+\+C\+O\+U\+NT&Number of directions. For internal use only. \\
\hline

\end{DoxyEnumFields}


Definition at line 417 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gaa31bcc2beed6a1f62ec495337c239177}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ec\+\_\+watchdog\+\_\+mode\+\_\+t@{ec\+\_\+watchdog\+\_\+mode\+\_\+t}}
\index{ec\+\_\+watchdog\+\_\+mode\+\_\+t@{ec\+\_\+watchdog\+\_\+mode\+\_\+t}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ec\+\_\+watchdog\+\_\+mode\+\_\+t}
{\footnotesize\ttfamily enum \textbf{ ec\+\_\+watchdog\+\_\+mode\+\_\+t}}



Watchdog mode for sync manager configuration. 

Used to specify, if a sync manager\textquotesingle{}s watchdog is to be enabled. \begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+W\+D\+\_\+\+D\+E\+F\+A\+U\+LT@{E\+C\+\_\+\+W\+D\+\_\+\+D\+E\+F\+A\+U\+LT}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+D\+\_\+\+D\+E\+F\+A\+U\+LT@{E\+C\+\_\+\+W\+D\+\_\+\+D\+E\+F\+A\+U\+LT}}}\mbox{\label{group__ApplicationInterface_ggaa31bcc2beed6a1f62ec495337c239177a067dbac72731bbc99525c11777552703}} 
E\+C\+\_\+\+W\+D\+\_\+\+D\+E\+F\+A\+U\+LT&Use the default setting of the sync manager. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+W\+D\+\_\+\+E\+N\+A\+B\+LE@{E\+C\+\_\+\+W\+D\+\_\+\+E\+N\+A\+B\+LE}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+D\+\_\+\+E\+N\+A\+B\+LE@{E\+C\+\_\+\+W\+D\+\_\+\+E\+N\+A\+B\+LE}}}\mbox{\label{group__ApplicationInterface_ggaa31bcc2beed6a1f62ec495337c239177aee16c13a5ec3c6105a41a1d4c562e82d}} 
E\+C\+\_\+\+W\+D\+\_\+\+E\+N\+A\+B\+LE&Enable the watchdog. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+W\+D\+\_\+\+D\+I\+S\+A\+B\+LE@{E\+C\+\_\+\+W\+D\+\_\+\+D\+I\+S\+A\+B\+LE}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+W\+D\+\_\+\+D\+I\+S\+A\+B\+LE@{E\+C\+\_\+\+W\+D\+\_\+\+D\+I\+S\+A\+B\+LE}}}\mbox{\label{group__ApplicationInterface_ggaa31bcc2beed6a1f62ec495337c239177adfee5b587c2fac3791f4b13ccd64645a}} 
E\+C\+\_\+\+W\+D\+\_\+\+D\+I\+S\+A\+B\+LE&Disable the watchdog. \\
\hline

\end{DoxyEnumFields}


Definition at line 430 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_gae94149f829f04960c62d63764a7779df}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ec\+\_\+request\+\_\+state\+\_\+t@{ec\+\_\+request\+\_\+state\+\_\+t}}
\index{ec\+\_\+request\+\_\+state\+\_\+t@{ec\+\_\+request\+\_\+state\+\_\+t}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ec\+\_\+request\+\_\+state\+\_\+t}
{\footnotesize\ttfamily enum \textbf{ ec\+\_\+request\+\_\+state\+\_\+t}}



Request state. 

This is used as return type for \doxyref{ecrt\+\_\+sdo\+\_\+request\+\_\+state()}{p.}{group__ApplicationInterface_ga78d910487f583e333cdf978b4f12c3c1} and ecrt\+\_\+voe\+\_\+handler\+\_\+state(). \begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+U\+N\+U\+S\+ED@{E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+U\+N\+U\+S\+ED}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+U\+N\+U\+S\+ED@{E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+U\+N\+U\+S\+ED}}}\mbox{\label{group__ApplicationInterface_ggae94149f829f04960c62d63764a7779dfa8a9e6590d04b31b12b03d7071d106cf5}} 
E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+U\+N\+U\+S\+ED&Not requested. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY@{E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY@{E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY}}}\mbox{\label{group__ApplicationInterface_ggae94149f829f04960c62d63764a7779dfad031578ebd61309cf3e0f618968fd3a2}} 
E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY&Request is being processed. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+SS@{E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+SS}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+SS@{E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+SS}}}\mbox{\label{group__ApplicationInterface_ggae94149f829f04960c62d63764a7779dfab2473480381319839a822fc009aa0db5}} 
E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+SS&Request was processed successfully. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+E\+R\+R\+OR@{E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+E\+R\+R\+OR}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+E\+R\+R\+OR@{E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+E\+R\+R\+OR}}}\mbox{\label{group__ApplicationInterface_ggae94149f829f04960c62d63764a7779dfa870ae0f25d0f780ebcaac16c920f00e3}} 
E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+E\+R\+R\+OR&Request processing failed. \\
\hline

\end{DoxyEnumFields}


Definition at line 517 of file ecrt.\+h.

\mbox{\label{group__ApplicationInterface_ga18c064146090e45d36c05876c546caea}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ec\+\_\+al\+\_\+state\+\_\+t@{ec\+\_\+al\+\_\+state\+\_\+t}}
\index{ec\+\_\+al\+\_\+state\+\_\+t@{ec\+\_\+al\+\_\+state\+\_\+t}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ec\+\_\+al\+\_\+state\+\_\+t}
{\footnotesize\ttfamily enum \textbf{ ec\+\_\+al\+\_\+state\+\_\+t}}



Application-\/layer state. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+I\+N\+IT@{E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+I\+N\+IT}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+I\+N\+IT@{E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+I\+N\+IT}}}\mbox{\label{group__ApplicationInterface_gga18c064146090e45d36c05876c546caeaa1e8639024a180fdc380559b8f7a02b4f}} 
E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+I\+N\+IT&Init. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+P\+R\+E\+OP@{E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+P\+R\+E\+OP}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+P\+R\+E\+OP@{E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+P\+R\+E\+OP}}}\mbox{\label{group__ApplicationInterface_gga18c064146090e45d36c05876c546caeaaf31a3511a6004d7909a71911a289681f}} 
E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+P\+R\+E\+OP&Pre-\/operational. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+A\+F\+E\+OP@{E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+A\+F\+E\+OP}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+A\+F\+E\+OP@{E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+A\+F\+E\+OP}}}\mbox{\label{group__ApplicationInterface_gga18c064146090e45d36c05876c546caeaafb41d7398780a3f09ba2c19d624b2668}} 
E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+A\+F\+E\+OP&Safe-\/operational. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+OP@{E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+OP}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+OP@{E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+OP}}}\mbox{\label{group__ApplicationInterface_gga18c064146090e45d36c05876c546caeaa4f746cb4e141c28b8aeb9c6cfe78177e}} 
E\+C\+\_\+\+A\+L\+\_\+\+S\+T\+A\+T\+E\+\_\+\+OP&Operational. \\
\hline

\end{DoxyEnumFields}


Definition at line 528 of file ecrt.\+h.



\subsection{Function Documentation}
\mbox{\label{group__ApplicationInterface_ga242aedc8a03b7c4d0121bc670b68bf5b}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+version\+\_\+magic@{ecrt\+\_\+version\+\_\+magic}}
\index{ecrt\+\_\+version\+\_\+magic@{ecrt\+\_\+version\+\_\+magic}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+version\+\_\+magic()}
{\footnotesize\ttfamily unsigned int ecrt\+\_\+version\+\_\+magic (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Returns the version magic of the realtime interface. 

\begin{DoxyReturn}{Returns}
Value of \doxyref{E\+C\+R\+T\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+A\+G\+I\+C()}{p.}{group__ApplicationInterface_ga9da1b3be0320bb6fd2fd7a87874e6324} at Ether\+C\+AT master compile time. 
\end{DoxyReturn}


Definition at line 640 of file module.\+c.

\mbox{\label{group__ApplicationInterface_gafb85534b6fcba3fa1fab6c81173b2ed1}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+request\+\_\+master@{ecrt\+\_\+request\+\_\+master}}
\index{ecrt\+\_\+request\+\_\+master@{ecrt\+\_\+request\+\_\+master}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+request\+\_\+master()}
{\footnotesize\ttfamily \textbf{ ec\+\_\+master\+\_\+t}$\ast$ ecrt\+\_\+request\+\_\+master (\begin{DoxyParamCaption}\item[{unsigned int}]{master\+\_\+index }\end{DoxyParamCaption})}



Requests an Ether\+C\+AT master for realtime operation. 

Before an application can access an Ether\+C\+AT master, it has to reserve one for exclusive use.

In userspace, this is a convenience function for ecrt\+\_\+open\+\_\+master() and ecrt\+\_\+master\+\_\+reserve().

This function has to be the first function an application has to call to use Ether\+C\+AT. The function takes the index of the master as its argument. The first master has index 0, the n-\/th master has index n -\/ 1. The number of masters has to be specified when loading the master module.

\begin{DoxyReturn}{Returns}
Pointer to the reserved master, otherwise {\itshape N\+U\+LL}. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em master\+\_\+index} & Index of the master to request. \\
\hline
\end{DoxyParams}


Definition at line 606 of file module.\+c.

\mbox{\label{group__ApplicationInterface_ga64219721098ec5069eab27f1923de9ea}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+release\+\_\+master@{ecrt\+\_\+release\+\_\+master}}
\index{ecrt\+\_\+release\+\_\+master@{ecrt\+\_\+release\+\_\+master}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+release\+\_\+master()}
{\footnotesize\ttfamily void ecrt\+\_\+release\+\_\+master (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master }\end{DoxyParamCaption})}



Releases a requested Ether\+C\+AT master. 

After use, a master it has to be released to make it available for other applications.

This method frees all created data structures. It should not be called in realtime context.

If the master was activated, \doxyref{ecrt\+\_\+master\+\_\+deactivate()}{p.}{group__ApplicationInterface_ga46b3fe78742ddf929b624103432ec4dd} is called internally. 
\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master \\
\hline
\end{DoxyParams}


Definition at line 614 of file module.\+c.

\mbox{\label{group__ApplicationInterface_ga644db1b4181bfe2943bb8fa81bd027f7}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+callbacks@{ecrt\+\_\+master\+\_\+callbacks}}
\index{ecrt\+\_\+master\+\_\+callbacks@{ecrt\+\_\+master\+\_\+callbacks}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+callbacks()}
{\footnotesize\ttfamily void ecrt\+\_\+master\+\_\+callbacks (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{void($\ast$)(void $\ast$)}]{send\+\_\+cb,  }\item[{void($\ast$)(void $\ast$)}]{receive\+\_\+cb,  }\item[{void $\ast$}]{cb\+\_\+data }\end{DoxyParamCaption})}



Sets the locking callbacks. 

For concurrent master access, i. e. if other instances than the application want to send and receive datagrams on the bus, the application has to provide a callback mechanism. This method takes two function pointers as its parameters. Asynchronous master access (like EoE processing) is only possible if the callbacks have been set.

The task of the send callback ({\itshape send\+\_\+cb}) is to decide, if the bus is currently accessible and whether or not to call the \doxyref{ecrt\+\_\+master\+\_\+send\+\_\+ext()}{p.}{group__ApplicationInterface_ga62360cb642f555269d64df1111f6c771} method.

The task of the receive callback ({\itshape receive\+\_\+cb}) is to decide, if a call to \doxyref{ecrt\+\_\+master\+\_\+receive()}{p.}{group__ApplicationInterface_ga9544e79db51c59a96af6493025cdc933} is allowed and to execute it respectively.

\begin{DoxyAttention}{Attention}
This method has to be called before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}. 
\end{DoxyAttention}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master \\
\hline
{\em send\+\_\+cb} & Datagram sending callback. \\
\hline
{\em receive\+\_\+cb} & Receive callback. \\
\hline
{\em cb\+\_\+data} & Arbitrary pointer passed to the callback functions. \\
\hline
\end{DoxyParams}


Definition at line 2677 of file master.\+c.

\mbox{\label{group__ApplicationInterface_gae4ede07f05b211667078ab2b2396da6e}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+create\+\_\+domain@{ecrt\+\_\+master\+\_\+create\+\_\+domain}}
\index{ecrt\+\_\+master\+\_\+create\+\_\+domain@{ecrt\+\_\+master\+\_\+create\+\_\+domain}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+create\+\_\+domain()}
{\footnotesize\ttfamily \textbf{ ec\+\_\+domain\+\_\+t}$\ast$ ecrt\+\_\+master\+\_\+create\+\_\+domain (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master }\end{DoxyParamCaption})}



Creates a new process data domain. 

For process data exchange, at least one process data domain is needed. This method creates a new process data domain and returns a pointer to the new domain object. This object can be used for registering P\+D\+Os and exchanging them in cyclic operation.

This method allocates memory and should be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxyReturn}{Returns}
Pointer to the new domain on success, else N\+U\+LL. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
\end{DoxyParams}


Definition at line 2254 of file master.\+c.

\mbox{\label{group__ApplicationInterface_gaa190a5d3aa2a72b8950ef93aa7baab0b}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+slave\+\_\+config@{ecrt\+\_\+master\+\_\+slave\+\_\+config}}
\index{ecrt\+\_\+master\+\_\+slave\+\_\+config@{ecrt\+\_\+master\+\_\+slave\+\_\+config}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+slave\+\_\+config()}
{\footnotesize\ttfamily \textbf{ ec\+\_\+slave\+\_\+config\+\_\+t}$\ast$ ecrt\+\_\+master\+\_\+slave\+\_\+config (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{uint16\+\_\+t}]{alias,  }\item[{uint16\+\_\+t}]{position,  }\item[{uint32\+\_\+t}]{vendor\+\_\+id,  }\item[{uint32\+\_\+t}]{product\+\_\+code }\end{DoxyParamCaption})}



Obtains a slave configuration. 

Creates a slave configuration object for the given {\itshape alias} and {\itshape position} tuple and returns it. If a configuration with the same {\itshape alias} and {\itshape position} already exists, it will be re-\/used. In the latter case, the given vendor ID and product code are compared to the stored ones. On mismatch, an error message is raised and the function returns {\itshape N\+U\+LL}.

Slaves are addressed with the {\itshape alias} and {\itshape position} parameters.
\begin{DoxyItemize}
\item If {\itshape alias} is zero, {\itshape position} is interpreted as the desired slave\textquotesingle{}s ring position.
\item If {\itshape alias} is non-\/zero, it matches a slave with the given alias. In this case, {\itshape position} is interpreted as ring offset, starting from the aliased slave, so a position of zero means the aliased slave itself and a positive value matches the n-\/th slave behind the aliased one.
\end{DoxyItemize}

If the slave with the given address is found during the bus configuration, its vendor ID and product code are matched against the given value. On mismatch, the slave is not configured and an error message is raised.

If different slave configurations are pointing to the same slave during bus configuration, a warning is raised and only the first configuration is applied.

This method allocates memory and should be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.


\begin{DoxyRetVals}{Return values}
{\em $>$0} & Pointer to the slave configuration structure. \\
\hline
{\em N\+U\+LL} & in the error case. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master \\
\hline
{\em alias} & Slave alias. \\
\hline
{\em position} & Slave position. \\
\hline
{\em vendor\+\_\+id} & Expected vendor ID. \\
\hline
{\em product\+\_\+code} & Expected product code. \\
\hline
\end{DoxyParams}


Definition at line 2577 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga31983aeee279fc5acaf5f7a0bb403160}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+select\+\_\+reference\+\_\+clock@{ecrt\+\_\+master\+\_\+select\+\_\+reference\+\_\+clock}}
\index{ecrt\+\_\+master\+\_\+select\+\_\+reference\+\_\+clock@{ecrt\+\_\+master\+\_\+select\+\_\+reference\+\_\+clock}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+select\+\_\+reference\+\_\+clock()}
{\footnotesize\ttfamily int ecrt\+\_\+master\+\_\+select\+\_\+reference\+\_\+clock (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc }\end{DoxyParamCaption})}



Selects the reference clock for distributed clocks. 

If this method is not called for a certain master, or if the slave configuration pointer is N\+U\+LL, then the first slave with DC functionality will provide the reference clock.

\begin{DoxyReturn}{Returns}
0 on success, otherwise negative error code. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
{\em sc} & Slave config of the slave to use as the reference slave (or N\+U\+LL). \\
\hline
\end{DoxyParams}


Definition at line 2588 of file master.\+c.

\mbox{\label{group__ApplicationInterface_gaefdb3b2d46b945fa6ebd65c4c5f16b8b}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master@{ecrt\+\_\+master}}
\index{ecrt\+\_\+master@{ecrt\+\_\+master}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master()}
{\footnotesize\ttfamily int ecrt\+\_\+master (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{\textbf{ ec\+\_\+master\+\_\+info\+\_\+t} $\ast$}]{master\+\_\+info }\end{DoxyParamCaption})}



Obtains master information. 

No memory is allocated on the heap in this function.

\begin{DoxyAttention}{Attention}
The pointer to this structure must point to a valid variable.
\end{DoxyAttention}
\begin{DoxyReturn}{Returns}
0 in case of success, else $<$ 0 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master \\
\hline
{\em master\+\_\+info} & Structure that will output the information \\
\hline
\end{DoxyParams}


Definition at line 2608 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga8a1a9398f7c1e17e4da8243fe03a7a80}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+get\+\_\+slave@{ecrt\+\_\+master\+\_\+get\+\_\+slave}}
\index{ecrt\+\_\+master\+\_\+get\+\_\+slave@{ecrt\+\_\+master\+\_\+get\+\_\+slave}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+get\+\_\+slave()}
{\footnotesize\ttfamily int ecrt\+\_\+master\+\_\+get\+\_\+slave (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{uint16\+\_\+t}]{slave\+\_\+position,  }\item[{\textbf{ ec\+\_\+slave\+\_\+info\+\_\+t} $\ast$}]{slave\+\_\+info }\end{DoxyParamCaption})}



Obtains slave information. 

Tries to find the slave with the given ring position. The obtained information is stored in a structure. No memory is allocated on the heap in this function.

\begin{DoxyAttention}{Attention}
The pointer to this structure must point to a valid variable.
\end{DoxyAttention}
\begin{DoxyReturn}{Returns}
0 in case of success, else $<$ 0 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master \\
\hline
{\em slave\+\_\+position} & Slave position. \\
\hline
{\em slave\+\_\+info} & Structure that will output the information \\
\hline
\end{DoxyParams}


Definition at line 2622 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga52ec1296b7c6c21e86b906ef4edc6208}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+sdo\+\_\+download@{ecrt\+\_\+master\+\_\+sdo\+\_\+download}}
\index{ecrt\+\_\+master\+\_\+sdo\+\_\+download@{ecrt\+\_\+master\+\_\+sdo\+\_\+download}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+sdo\+\_\+download()}
{\footnotesize\ttfamily int ecrt\+\_\+master\+\_\+sdo\+\_\+download (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{uint16\+\_\+t}]{slave\+\_\+position,  }\item[{uint16\+\_\+t}]{index,  }\item[{uint8\+\_\+t}]{subindex,  }\item[{uint8\+\_\+t $\ast$}]{data,  }\item[{size\+\_\+t}]{data\+\_\+size,  }\item[{uint32\+\_\+t $\ast$}]{abort\+\_\+code }\end{DoxyParamCaption})}



Executes an S\+DO download request to write data to a slave. 

This request is processed by the master state machine. This method blocks, until the request has been processed and may not be called in realtime context.


\begin{DoxyRetVals}{Return values}
{\em 0} & Success. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
{\em slave\+\_\+position} & Slave position. \\
\hline
{\em index} & Index of the S\+DO. \\
\hline
{\em subindex} & Subindex of the S\+DO. \\
\hline
{\em data} & Data buffer to download. \\
\hline
{\em data\+\_\+size} & Size of the data buffer. \\
\hline
{\em abort\+\_\+code} & Abort code of the S\+DO download. \\
\hline
\end{DoxyParams}


Definition at line 2800 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga357ce803ce5e7a8e59f14bf3eaf11439}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+sdo\+\_\+download\+\_\+complete@{ecrt\+\_\+master\+\_\+sdo\+\_\+download\+\_\+complete}}
\index{ecrt\+\_\+master\+\_\+sdo\+\_\+download\+\_\+complete@{ecrt\+\_\+master\+\_\+sdo\+\_\+download\+\_\+complete}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+sdo\+\_\+download\+\_\+complete()}
{\footnotesize\ttfamily int ecrt\+\_\+master\+\_\+sdo\+\_\+download\+\_\+complete (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{uint16\+\_\+t}]{slave\+\_\+position,  }\item[{uint16\+\_\+t}]{index,  }\item[{uint8\+\_\+t $\ast$}]{data,  }\item[{size\+\_\+t}]{data\+\_\+size,  }\item[{uint32\+\_\+t $\ast$}]{abort\+\_\+code }\end{DoxyParamCaption})}



Executes an S\+DO download request to write data to a slave via complete access. 

This request is processed by the master state machine. This method blocks, until the request has been processed and may not be called in realtime context.


\begin{DoxyRetVals}{Return values}
{\em 0} & Success. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
{\em slave\+\_\+position} & Slave position. \\
\hline
{\em index} & Index of the S\+DO. \\
\hline
{\em data} & Data buffer to download. \\
\hline
{\em data\+\_\+size} & Size of the data buffer. \\
\hline
{\em abort\+\_\+code} & Abort code of the S\+DO download. \\
\hline
\end{DoxyParams}


Definition at line 2884 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga8d6d538e803530ac104c9bf2d37a24c4}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+sdo\+\_\+upload@{ecrt\+\_\+master\+\_\+sdo\+\_\+upload}}
\index{ecrt\+\_\+master\+\_\+sdo\+\_\+upload@{ecrt\+\_\+master\+\_\+sdo\+\_\+upload}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+sdo\+\_\+upload()}
{\footnotesize\ttfamily int ecrt\+\_\+master\+\_\+sdo\+\_\+upload (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{uint16\+\_\+t}]{slave\+\_\+position,  }\item[{uint16\+\_\+t}]{index,  }\item[{uint8\+\_\+t}]{subindex,  }\item[{uint8\+\_\+t $\ast$}]{target,  }\item[{size\+\_\+t}]{target\+\_\+size,  }\item[{size\+\_\+t $\ast$}]{result\+\_\+size,  }\item[{uint32\+\_\+t $\ast$}]{abort\+\_\+code }\end{DoxyParamCaption})}



Executes an S\+DO upload request to read data from a slave. 

This request is processed by the master state machine. This method blocks, until the request has been processed and may not be called in realtime context.


\begin{DoxyRetVals}{Return values}
{\em 0} & Success. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
{\em slave\+\_\+position} & Slave position. \\
\hline
{\em index} & Index of the S\+DO. \\
\hline
{\em subindex} & Subindex of the S\+DO. \\
\hline
{\em target} & Target buffer for the upload. \\
\hline
{\em target\+\_\+size} & Size of the target buffer. \\
\hline
{\em result\+\_\+size} & Uploaded data size. \\
\hline
{\em abort\+\_\+code} & Abort code of the S\+DO upload. \\
\hline
\end{DoxyParams}


Definition at line 2970 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga5ddd58b7a66b774b6037edbc50c73293}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+write\+\_\+idn@{ecrt\+\_\+master\+\_\+write\+\_\+idn}}
\index{ecrt\+\_\+master\+\_\+write\+\_\+idn@{ecrt\+\_\+master\+\_\+write\+\_\+idn}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+write\+\_\+idn()}
{\footnotesize\ttfamily int ecrt\+\_\+master\+\_\+write\+\_\+idn (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{uint16\+\_\+t}]{slave\+\_\+position,  }\item[{uint8\+\_\+t}]{drive\+\_\+no,  }\item[{uint16\+\_\+t}]{idn,  }\item[{uint8\+\_\+t $\ast$}]{data,  }\item[{size\+\_\+t}]{data\+\_\+size,  }\item[{uint16\+\_\+t $\ast$}]{error\+\_\+code }\end{DoxyParamCaption})}



Executes an SoE write request. 

Starts writing an I\+DN and blocks until the request was processed, or an error occurred.


\begin{DoxyRetVals}{Return values}
{\em 0} & Success. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
{\em slave\+\_\+position} & Slave position. \\
\hline
{\em drive\+\_\+no} & Drive number. \\
\hline
{\em idn} & SoE I\+DN (see \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+idn()}{p.}{group__ApplicationInterface_gaa3d42e8188c64eaf794e8dc91a61b60b}). \\
\hline
{\em data} & Pointer to data to write. \\
\hline
{\em data\+\_\+size} & Size of data to write. \\
\hline
{\em error\+\_\+code} & Pointer to variable, where an SoE error code can be stored. \\
\hline
\end{DoxyParams}


Definition at line 3053 of file master.\+c.

\mbox{\label{group__ApplicationInterface_gacd875ea0739ebb3524269070d9357c4b}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+read\+\_\+idn@{ecrt\+\_\+master\+\_\+read\+\_\+idn}}
\index{ecrt\+\_\+master\+\_\+read\+\_\+idn@{ecrt\+\_\+master\+\_\+read\+\_\+idn}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+read\+\_\+idn()}
{\footnotesize\ttfamily int ecrt\+\_\+master\+\_\+read\+\_\+idn (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{uint16\+\_\+t}]{slave\+\_\+position,  }\item[{uint8\+\_\+t}]{drive\+\_\+no,  }\item[{uint16\+\_\+t}]{idn,  }\item[{uint8\+\_\+t $\ast$}]{target,  }\item[{size\+\_\+t}]{target\+\_\+size,  }\item[{size\+\_\+t $\ast$}]{result\+\_\+size,  }\item[{uint16\+\_\+t $\ast$}]{error\+\_\+code }\end{DoxyParamCaption})}



Executes an SoE read request. 

Starts reading an I\+DN and blocks until the request was processed, or an error occurred.


\begin{DoxyRetVals}{Return values}
{\em 0} & Success. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
{\em slave\+\_\+position} & Slave position. \\
\hline
{\em drive\+\_\+no} & Drive number. \\
\hline
{\em idn} & SoE I\+DN (see \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+idn()}{p.}{group__ApplicationInterface_gaa3d42e8188c64eaf794e8dc91a61b60b}). \\
\hline
{\em target} & Pointer to memory where the read data can be stored. \\
\hline
{\em target\+\_\+size} & Size of the memory {\itshape target} points to. \\
\hline
{\em result\+\_\+size} & Actual size of the received data. \\
\hline
{\em error\+\_\+code} & Pointer to variable, where an SoE error code can be stored. \\
\hline
\end{DoxyParams}


Definition at line 3129 of file master.\+c.

\mbox{\label{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+activate@{ecrt\+\_\+master\+\_\+activate}}
\index{ecrt\+\_\+master\+\_\+activate@{ecrt\+\_\+master\+\_\+activate}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+activate()}
{\footnotesize\ttfamily int ecrt\+\_\+master\+\_\+activate (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master }\end{DoxyParamCaption})}



Finishes the configuration phase and prepares for cyclic operation. 

This function tells the master that the configuration phase is finished and the realtime operation will begin. The function allocates internal memory for the domains and calculates the logical F\+M\+MU addresses for domain members. It tells the master state machine that the bus configuration is now to be applied.

\begin{DoxyAttention}{Attention}
After this function has been called, the realtime application is in charge of cyclically calling \doxyref{ecrt\+\_\+master\+\_\+send()}{p.}{group__ApplicationInterface_ga453f787866ee66afb98130cf4723762d} and \doxyref{ecrt\+\_\+master\+\_\+receive()}{p.}{group__ApplicationInterface_ga9544e79db51c59a96af6493025cdc933} to ensure bus communication. Before calling this function, the master thread is responsible for that, so these functions may not be called! The method itself allocates memory and should not be called in realtime context.
\end{DoxyAttention}
\begin{DoxyReturn}{Returns}
0 in case of success, else $<$ 0 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
\end{DoxyParams}


Definition at line 2264 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga46b3fe78742ddf929b624103432ec4dd}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+deactivate@{ecrt\+\_\+master\+\_\+deactivate}}
\index{ecrt\+\_\+master\+\_\+deactivate@{ecrt\+\_\+master\+\_\+deactivate}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+deactivate()}
{\footnotesize\ttfamily void ecrt\+\_\+master\+\_\+deactivate (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master }\end{DoxyParamCaption})}



Deactivates the master. 

Removes the bus configuration. All objects created by \doxyref{ecrt\+\_\+master\+\_\+create\+\_\+domain()}{p.}{group__ApplicationInterface_gae4ede07f05b211667078ab2b2396da6e}, \doxyref{ecrt\+\_\+master\+\_\+slave\+\_\+config()}{p.}{group__ApplicationInterface_gaa190a5d3aa2a72b8950ef93aa7baab0b}, \doxyref{ecrt\+\_\+domain\+\_\+data()}{p.}{group__ApplicationInterface_ga701738b03629d552c15c2cdd9b7b99c2} \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+sdo\+\_\+request()}{p.}{group__ApplicationInterface_ga14aa167c0d4afd84b0fbada417a204f1} and \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+voe\+\_\+handler()}{p.}{group__ApplicationInterface_ga6341627f6bf764312dd6e8c3140e9be1} are freed, so pointers to them become invalid.

This method should not be called in realtime context. 
\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
\end{DoxyParams}


Definition at line 2338 of file master.\+c.

\mbox{\label{group__ApplicationInterface_gae316a920dba8c28e14138b4bf394c230}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+set\+\_\+send\+\_\+interval@{ecrt\+\_\+master\+\_\+set\+\_\+send\+\_\+interval}}
\index{ecrt\+\_\+master\+\_\+set\+\_\+send\+\_\+interval@{ecrt\+\_\+master\+\_\+set\+\_\+send\+\_\+interval}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+set\+\_\+send\+\_\+interval()}
{\footnotesize\ttfamily int ecrt\+\_\+master\+\_\+set\+\_\+send\+\_\+interval (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{size\+\_\+t}]{send\+\_\+interval }\end{DoxyParamCaption})}



Set interval between calls to \doxyref{ecrt\+\_\+master\+\_\+send()}{p.}{group__ApplicationInterface_ga453f787866ee66afb98130cf4723762d}. 

This information helps the master to decide, how much data can be appended to a frame by the master state machine. When the master is configured with --enable-\/hrtimers, this is used to calculate the scheduling of the master thread.


\begin{DoxyRetVals}{Return values}
{\em 0} & on success. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
{\em send\+\_\+interval} & Send interval in us \\
\hline
\end{DoxyParams}
\mbox{\label{group__ApplicationInterface_ga453f787866ee66afb98130cf4723762d}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+send@{ecrt\+\_\+master\+\_\+send}}
\index{ecrt\+\_\+master\+\_\+send@{ecrt\+\_\+master\+\_\+send}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+send()}
{\footnotesize\ttfamily void ecrt\+\_\+master\+\_\+send (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master }\end{DoxyParamCaption})}



Sends all datagrams in the queue. 

This method takes all datagrams, that have been queued for transmission, puts them into frames, and passes them to the Ethernet device for sending.

Has to be called cyclically by the application after \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac} has returned. 
\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
\end{DoxyParams}


Definition at line 2409 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga9544e79db51c59a96af6493025cdc933}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+receive@{ecrt\+\_\+master\+\_\+receive}}
\index{ecrt\+\_\+master\+\_\+receive@{ecrt\+\_\+master\+\_\+receive}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+receive()}
{\footnotesize\ttfamily void ecrt\+\_\+master\+\_\+receive (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master }\end{DoxyParamCaption})}



Fetches received frames from the hardware and processes the datagrams. 

Queries the network device for received frames by calling the interrupt service routine. Extracts received datagrams and dispatches the results to the datagram objects in the queue. Received datagrams, and the ones that timed out, will be marked, and dequeued.

Has to be called cyclically by the realtime application after \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac} has returned. 
\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
\end{DoxyParams}


Definition at line 2453 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga62360cb642f555269d64df1111f6c771}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+send\+\_\+ext@{ecrt\+\_\+master\+\_\+send\+\_\+ext}}
\index{ecrt\+\_\+master\+\_\+send\+\_\+ext@{ecrt\+\_\+master\+\_\+send\+\_\+ext}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+send\+\_\+ext()}
{\footnotesize\ttfamily void ecrt\+\_\+master\+\_\+send\+\_\+ext (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master }\end{DoxyParamCaption})}



Sends non-\/application datagrams. 

This method has to be called in the send callback function passed via \doxyref{ecrt\+\_\+master\+\_\+callbacks()}{p.}{group__ApplicationInterface_ga644db1b4181bfe2943bb8fa81bd027f7} to allow the sending of non-\/application datagrams. 
\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
\end{DoxyParams}


Definition at line 2502 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga9f623ede71e87dd0e9d6ab87086f0d4f}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+state@{ecrt\+\_\+master\+\_\+state}}
\index{ecrt\+\_\+master\+\_\+state@{ecrt\+\_\+master\+\_\+state}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+state()}
{\footnotesize\ttfamily void ecrt\+\_\+master\+\_\+state (\begin{DoxyParamCaption}\item[{const \textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{\textbf{ ec\+\_\+master\+\_\+state\+\_\+t} $\ast$}]{state }\end{DoxyParamCaption})}



Reads the current master state. 

Stores the master state information in the given {\itshape state} structure.

This method returns a global state. For the link-\/specific states in a redundant bus topology, use the \doxyref{ecrt\+\_\+master\+\_\+link\+\_\+state()}{p.}{group__ApplicationInterface_ga90c4d1a88ecc1f3a49ba73dad4efdb14} method. 
\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
{\em state} & Structure to store the information. \\
\hline
\end{DoxyParams}


Definition at line 2691 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga90c4d1a88ecc1f3a49ba73dad4efdb14}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+link\+\_\+state@{ecrt\+\_\+master\+\_\+link\+\_\+state}}
\index{ecrt\+\_\+master\+\_\+link\+\_\+state@{ecrt\+\_\+master\+\_\+link\+\_\+state}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+link\+\_\+state()}
{\footnotesize\ttfamily int ecrt\+\_\+master\+\_\+link\+\_\+state (\begin{DoxyParamCaption}\item[{const \textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{unsigned int}]{dev\+\_\+idx,  }\item[{\textbf{ ec\+\_\+master\+\_\+link\+\_\+state\+\_\+t} $\ast$}]{state }\end{DoxyParamCaption})}



Reads the current state of a redundant link. 

Stores the link state information in the given {\itshape state} structure.

\begin{DoxyReturn}{Returns}
Zero on success, otherwise negative error code. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
{\em dev\+\_\+idx} & Index of the device (0 = main device, 1 = first backup device, ...). \\
\hline
{\em state} & Structure to store the information. \\
\hline
\end{DoxyParams}


Definition at line 2714 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga567ccc15f09d5722fd6269f297b72a58}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+application\+\_\+time@{ecrt\+\_\+master\+\_\+application\+\_\+time}}
\index{ecrt\+\_\+master\+\_\+application\+\_\+time@{ecrt\+\_\+master\+\_\+application\+\_\+time}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+application\+\_\+time()}
{\footnotesize\ttfamily void ecrt\+\_\+master\+\_\+application\+\_\+time (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{uint64\+\_\+t}]{app\+\_\+time }\end{DoxyParamCaption})}



Sets the application time. 

The master has to know the application\textquotesingle{}s time when operating slaves with distributed clocks. The time is not incremented by the master itself, so this method has to be called cyclically.

\begin{DoxyAttention}{Attention}
The first call of this method is used to calculate the phase delay for the slaves\textquotesingle{} S\+Y\+N\+C0/1 interrupts. Either the method has to be called during the realtime cycle {\itshape only}, or the first time submitted must be in-\/phase with the realtime cycle. Otherwise synchronisation problems can occur.
\end{DoxyAttention}
The time is used when setting the slaves\textquotesingle{} {\ttfamily System Time Offset} and {\ttfamily Cyclic Operation Start Time} registers and when synchronizing the DC reference clock to the application time via \doxyref{ecrt\+\_\+master\+\_\+sync\+\_\+reference\+\_\+clock()}{p.}{group__ApplicationInterface_gabdc6735565f209d8ab8473f34617a526}.

The time is defined as nanoseconds from 2000-\/01-\/01 00\+:00. Converting an epoch time can be done with the \doxyref{E\+C\+\_\+\+T\+I\+M\+E\+V\+A\+L2\+N\+A\+N\+O()}{p.}{group__ApplicationInterface_gaeffbc7820c2e642aee02c92729d4411c} macro. 
\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
{\em app\+\_\+time} & Application time. \\
\hline
\end{DoxyParams}


Definition at line 2730 of file master.\+c.

\mbox{\label{group__ApplicationInterface_gabdc6735565f209d8ab8473f34617a526}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+sync\+\_\+reference\+\_\+clock@{ecrt\+\_\+master\+\_\+sync\+\_\+reference\+\_\+clock}}
\index{ecrt\+\_\+master\+\_\+sync\+\_\+reference\+\_\+clock@{ecrt\+\_\+master\+\_\+sync\+\_\+reference\+\_\+clock}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+sync\+\_\+reference\+\_\+clock()}
{\footnotesize\ttfamily void ecrt\+\_\+master\+\_\+sync\+\_\+reference\+\_\+clock (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master }\end{DoxyParamCaption})}



Queues the DC reference clock drift compensation datagram for sending. 

The reference clock will by synchronized to the application time provided by the last call off \doxyref{ecrt\+\_\+master\+\_\+application\+\_\+time()}{p.}{group__ApplicationInterface_ga567ccc15f09d5722fd6269f297b72a58}. 
\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
\end{DoxyParams}


Definition at line 2761 of file master.\+c.

\mbox{\label{group__ApplicationInterface_gadb8b8f705803689e789f022b01eb8deb}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+sync\+\_\+slave\+\_\+clocks@{ecrt\+\_\+master\+\_\+sync\+\_\+slave\+\_\+clocks}}
\index{ecrt\+\_\+master\+\_\+sync\+\_\+slave\+\_\+clocks@{ecrt\+\_\+master\+\_\+sync\+\_\+slave\+\_\+clocks}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+sync\+\_\+slave\+\_\+clocks()}
{\footnotesize\ttfamily void ecrt\+\_\+master\+\_\+sync\+\_\+slave\+\_\+clocks (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master }\end{DoxyParamCaption})}



Queues the DC clock drift compensation datagram for sending. 

All slave clocks synchronized to the reference clock. 
\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
\end{DoxyParams}


Definition at line 2771 of file master.\+c.

\mbox{\label{group__ApplicationInterface_gaefb582f13442ef8b770fd308b8de949c}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+reference\+\_\+clock\+\_\+time@{ecrt\+\_\+master\+\_\+reference\+\_\+clock\+\_\+time}}
\index{ecrt\+\_\+master\+\_\+reference\+\_\+clock\+\_\+time@{ecrt\+\_\+master\+\_\+reference\+\_\+clock\+\_\+time}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+reference\+\_\+clock\+\_\+time()}
{\footnotesize\ttfamily int ecrt\+\_\+master\+\_\+reference\+\_\+clock\+\_\+time (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master,  }\item[{uint32\+\_\+t $\ast$}]{time }\end{DoxyParamCaption})}



Get the lower 32 bit of the reference clock system time. 

This method can be used to synchronize the master to the reference clock.

The reference clock system time is queried via the \doxyref{ecrt\+\_\+master\+\_\+sync\+\_\+slave\+\_\+clocks()}{p.}{group__ApplicationInterface_gadb8b8f705803689e789f022b01eb8deb} method, that reads the system time of the reference clock and writes it to the slave clocks (so be sure to call it cyclically to get valid data).

\begin{DoxyAttention}{Attention}
The returned time is the system time of the reference clock minus the transmission delay of the reference clock.
\end{DoxyAttention}

\begin{DoxyRetVals}{Return values}
{\em 0} & success, system time was written into {\itshape time}. \\
\hline
{\em -\/\+E\+N\+X\+IO} & No reference clock found. \\
\hline
{\em -\/\+E\+IO} & Slave synchronization datagram was not received. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
{\em time} & Pointer to store the queried system time. \\
\hline
\end{DoxyParams}


Definition at line 2742 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga3df6e34876cbad6e3e2a4d51ec1ba812}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+queue@{ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+queue}}
\index{ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+queue@{ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+queue}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+queue()}
{\footnotesize\ttfamily void ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+queue (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master }\end{DoxyParamCaption})}



Queues the DC synchrony monitoring datagram for sending. 

The datagram broadcast-\/reads all \char`\"{}\+System time difference\char`\"{} registers ({\itshape 0x092c}) to get an upper estimation of the DC synchrony. The result can be checked with the \doxyref{ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+process()}{p.}{group__ApplicationInterface_ga0a0b4bef9b058f9a7752878f7c07cdf3} method. 
\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
\end{DoxyParams}


Definition at line 2781 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga0a0b4bef9b058f9a7752878f7c07cdf3}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+process@{ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+process}}
\index{ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+process@{ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+process}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+process()}
{\footnotesize\ttfamily uint32\+\_\+t ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+process (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master }\end{DoxyParamCaption})}



Processes the DC synchrony monitoring datagram. 

If the sync monitoring datagram was sent before with \doxyref{ecrt\+\_\+master\+\_\+sync\+\_\+monitor\+\_\+queue()}{p.}{group__ApplicationInterface_ga3df6e34876cbad6e3e2a4d51ec1ba812}, the result can be queried with this method.

\begin{DoxyReturn}{Returns}
Upper estimation of the maximum time difference in ns. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
\end{DoxyParams}


Definition at line 2789 of file master.\+c.

\mbox{\label{group__ApplicationInterface_gab6455adf50e074c51894113adb49e00c}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+master\+\_\+reset@{ecrt\+\_\+master\+\_\+reset}}
\index{ecrt\+\_\+master\+\_\+reset@{ecrt\+\_\+master\+\_\+reset}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+master\+\_\+reset()}
{\footnotesize\ttfamily void ecrt\+\_\+master\+\_\+reset (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+master\+\_\+t} $\ast$}]{master }\end{DoxyParamCaption})}



Retry configuring slaves. 

Via this method, the application can tell the master to bring all slaves to OP state. In general, this is not necessary, because it is automatically done by the master. But with special slaves, that can be reconfigured by the vendor during runtime, it can be useful. 
\begin{DoxyParams}{Parameters}
{\em master} & Ether\+C\+AT master. \\
\hline
\end{DoxyParams}


Definition at line 3213 of file master.\+c.

\mbox{\label{group__ApplicationInterface_ga4ac6eae111bdbf1d4cd09fa2f965a887}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+sync\+\_\+manager@{ecrt\+\_\+slave\+\_\+config\+\_\+sync\+\_\+manager}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+sync\+\_\+manager@{ecrt\+\_\+slave\+\_\+config\+\_\+sync\+\_\+manager}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+sync\+\_\+manager()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+sync\+\_\+manager (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint8\+\_\+t}]{sync\+\_\+index,  }\item[{\textbf{ ec\+\_\+direction\+\_\+t}}]{direction,  }\item[{\textbf{ ec\+\_\+watchdog\+\_\+mode\+\_\+t}}]{watchdog\+\_\+mode }\end{DoxyParamCaption})}



Configure a sync manager. 

Sets the direction of a sync manager. This overrides the direction bits from the default control register from S\+II.

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxyReturn}{Returns}
zero on success, else non-\/zero 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em sync\+\_\+index} & Sync manager index. Must be less than \doxyref{E\+C\+\_\+\+M\+A\+X\+\_\+\+S\+Y\+N\+C\+\_\+\+M\+A\+N\+A\+G\+E\+RS}{p.}{group__ApplicationInterface_gab737cd2955a397ebd0df13e9148cec9f}. \\
\hline
{\em direction} & Input/\+Output. \\
\hline
{\em watchdog\+\_\+mode} & Watchdog mode. \\
\hline
\end{DoxyParams}


Definition at line 524 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_gaba67c3e575110297f9fdcffad573d367}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+watchdog@{ecrt\+\_\+slave\+\_\+config\+\_\+watchdog}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+watchdog@{ecrt\+\_\+slave\+\_\+config\+\_\+watchdog}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+watchdog()}
{\footnotesize\ttfamily void ecrt\+\_\+slave\+\_\+config\+\_\+watchdog (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint16\+\_\+t}]{watchdog\+\_\+divider,  }\item[{uint16\+\_\+t}]{watchdog\+\_\+intervals }\end{DoxyParamCaption})}



Configure a slave\textquotesingle{}s watchdog times. 

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}. 
\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em watchdog\+\_\+divider} & Number of 40 ns intervals. Used as a base unit for all slave watchdogs. If set to zero, the value is not written, so the default is used. \\
\hline
{\em watchdog\+\_\+intervals} & Number of base intervals for process data watchdog. If set to zero, the value is not written, so the default is used. \\
\hline
\end{DoxyParams}


Definition at line 551 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_gaef2958fe19c088978857e7b91f692630}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+add@{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+add}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+add@{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+add}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+add()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+add (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint8\+\_\+t}]{sync\+\_\+index,  }\item[{uint16\+\_\+t}]{index }\end{DoxyParamCaption})}



Add a P\+DO to a sync manager\textquotesingle{}s P\+DO assignment. 

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxySeeAlso}{See also}
\doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+pdos()}{p.}{group__ApplicationInterface_ga7bc2683699a5c0c551f0cfdc90c1a559} 
\end{DoxySeeAlso}
\begin{DoxyReturn}{Returns}
zero on success, else non-\/zero 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em sync\+\_\+index} & Sync manager index. Must be less than \doxyref{E\+C\+\_\+\+M\+A\+X\+\_\+\+S\+Y\+N\+C\+\_\+\+M\+A\+N\+A\+G\+E\+RS}{p.}{group__ApplicationInterface_gab737cd2955a397ebd0df13e9148cec9f}. \\
\hline
{\em index} & Index of the P\+DO to assign. \\
\hline
\end{DoxyParams}


Definition at line 563 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_gafc2fb2a662bd8129dea5330e5e313b5f}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+clear@{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+clear}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+clear@{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+clear}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+clear()}
{\footnotesize\ttfamily void ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+clear (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint8\+\_\+t}]{sync\+\_\+index }\end{DoxyParamCaption})}



Clear a sync manager\textquotesingle{}s P\+DO assignment. 

This can be called before assigning P\+D\+Os via \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+add()}{p.}{group__ApplicationInterface_gaef2958fe19c088978857e7b91f692630}, to clear the default assignment of a sync manager.

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxySeeAlso}{See also}
\doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+pdos()}{p.}{group__ApplicationInterface_ga7bc2683699a5c0c551f0cfdc90c1a559} 
\end{DoxySeeAlso}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em sync\+\_\+index} & Sync manager index. Must be less than \doxyref{E\+C\+\_\+\+M\+A\+X\+\_\+\+S\+Y\+N\+C\+\_\+\+M\+A\+N\+A\+G\+E\+RS}{p.}{group__ApplicationInterface_gab737cd2955a397ebd0df13e9148cec9f}. \\
\hline
\end{DoxyParams}


Definition at line 593 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga3a0f83e1c3e3edf978b3017f94cc375d}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+add@{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+add}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+add@{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+add}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+add()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+add (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint16\+\_\+t}]{pdo\+\_\+index,  }\item[{uint16\+\_\+t}]{entry\+\_\+index,  }\item[{uint8\+\_\+t}]{entry\+\_\+subindex,  }\item[{uint8\+\_\+t}]{entry\+\_\+bit\+\_\+length }\end{DoxyParamCaption})}



Add a P\+DO entry to the given P\+DO\textquotesingle{}s mapping. 

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxySeeAlso}{See also}
\doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+pdos()}{p.}{group__ApplicationInterface_ga7bc2683699a5c0c551f0cfdc90c1a559} 
\end{DoxySeeAlso}
\begin{DoxyReturn}{Returns}
zero on success, else non-\/zero 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em pdo\+\_\+index} & Index of the P\+DO. \\
\hline
{\em entry\+\_\+index} & Index of the P\+DO entry to add to the P\+DO\textquotesingle{}s mapping. \\
\hline
{\em entry\+\_\+subindex} & Subindex of the P\+DO entry to add to the P\+DO\textquotesingle{}s mapping. \\
\hline
{\em entry\+\_\+bit\+\_\+length} & Size of the P\+DO entry in bit. \\
\hline
\end{DoxyParams}


Definition at line 611 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga8496abee3bd32fec5ffd74bf4705cc53}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+clear@{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+clear}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+clear@{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+clear}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+clear()}
{\footnotesize\ttfamily void ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+clear (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint16\+\_\+t}]{pdo\+\_\+index }\end{DoxyParamCaption})}



Clear the mapping of a given P\+DO. 

This can be called before mapping P\+DO entries via \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+add()}{p.}{group__ApplicationInterface_ga3a0f83e1c3e3edf978b3017f94cc375d}, to clear the default mapping.

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxySeeAlso}{See also}
\doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+pdos()}{p.}{group__ApplicationInterface_ga7bc2683699a5c0c551f0cfdc90c1a559} 
\end{DoxySeeAlso}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em pdo\+\_\+index} & Index of the P\+DO. \\
\hline
\end{DoxyParams}


Definition at line 648 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga7bc2683699a5c0c551f0cfdc90c1a559}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+pdos@{ecrt\+\_\+slave\+\_\+config\+\_\+pdos}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+pdos@{ecrt\+\_\+slave\+\_\+config\+\_\+pdos}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+pdos()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+pdos (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{unsigned int}]{n\+\_\+syncs,  }\item[{const \textbf{ ec\+\_\+sync\+\_\+info\+\_\+t}}]{syncs[$\,$] }\end{DoxyParamCaption})}



Specify a complete P\+DO configuration. 

This function is a convenience wrapper for the functions \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+sync\+\_\+manager()}{p.}{group__ApplicationInterface_ga4ac6eae111bdbf1d4cd09fa2f965a887}, \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+clear()}{p.}{group__ApplicationInterface_gafc2fb2a662bd8129dea5330e5e313b5f}, \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+assign\+\_\+add()}{p.}{group__ApplicationInterface_gaef2958fe19c088978857e7b91f692630}, \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+clear()}{p.}{group__ApplicationInterface_ga8496abee3bd32fec5ffd74bf4705cc53} and \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+pdo\+\_\+mapping\+\_\+add()}{p.}{group__ApplicationInterface_ga3a0f83e1c3e3edf978b3017f94cc375d}, that are better suitable for automatic code generation.

The following example shows, how to specify a complete configuration, including the P\+DO mappings. With this information, the master is able to reserve the complete process data, even if the slave is not present at configuration time\+:


\begin{DoxyCode}
ec_pdo_entry_info_t el3162\_channel1[] = \{
    \{0x3101, 1,  8\}, \textcolor{comment}{// status}
    \{0x3101, 2, 16\}  \textcolor{comment}{// value}
\};

ec_pdo_entry_info_t el3162\_channel2[] = \{
    \{0x3102, 1,  8\}, \textcolor{comment}{// status}
    \{0x3102, 2, 16\}  \textcolor{comment}{// value}
\};

ec_pdo_info_t el3162\_pdos[] = \{
    \{0x1A00, 2, el3162\_channel1\},
    \{0x1A01, 2, el3162\_channel2\}
\};

ec_sync_info_t el3162\_syncs[] = \{
    \{2, EC_DIR_OUTPUT\},
    \{3, EC_DIR_INPUT, 2, el3162\_pdos\},
    \{0xff\}
\};

\textcolor{keywordflow}{if} (ecrt_slave_config_pdos(sc\_ana\_in, EC_END, el3162\_syncs)) \{
    \textcolor{comment}{// handle error}
\}
\end{DoxyCode}


The next example shows, how to configure the P\+DO assignment only. The entries for each assigned P\+DO are taken from the P\+DO\textquotesingle{}s default mapping. Please note, that P\+DO entry registration will fail, if the P\+DO configuration is left empty and the slave is offline.


\begin{DoxyCode}
ec_pdo_info_t pdos[] = \{
    \{0x1600\}, \textcolor{comment}{// Channel 1}
    \{0x1601\}  \textcolor{comment}{// Channel 2}
\};

ec_sync_info_t syncs[] = \{
    \{3, EC_DIR_INPUT, 2, pdos\},
\};

\textcolor{keywordflow}{if} (ecrt_slave_config_pdos(slave\_config\_ana\_in, 1, syncs)) \{
    \textcolor{comment}{// handle error}
\}
\end{DoxyCode}


Processing of {\itshape syncs} will stop, if
\begin{DoxyItemize}
\item the number of processed items reaches {\itshape n\+\_\+syncs}, or
\item the {\itshape index} member of an \doxyref{ec\+\_\+sync\+\_\+info\+\_\+t}{p.}{structec__sync__info__t} item is 0xff. In this case, {\itshape n\+\_\+syncs} should set to a number greater than the number of list items; using E\+C\+\_\+\+E\+ND is recommended.
\end{DoxyItemize}

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxyReturn}{Returns}
zero on success, else non-\/zero 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em n\+\_\+syncs} & Number of sync manager configurations in {\itshape syncs}. \\
\hline
{\em syncs} & Array of sync manager configurations. \\
\hline
\end{DoxyParams}


Definition at line 673 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga44fe6bd549328c34ca4ed6893765206f}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry@{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry@{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint16\+\_\+t}]{entry\+\_\+index,  }\item[{uint8\+\_\+t}]{entry\+\_\+subindex,  }\item[{\textbf{ ec\+\_\+domain\+\_\+t} $\ast$}]{domain,  }\item[{unsigned int $\ast$}]{bit\+\_\+position }\end{DoxyParamCaption})}



Registers a P\+DO entry for process data exchange in a domain. 

Searches the assigned P\+D\+Os for the given P\+DO entry. An error is raised, if the given entry is not mapped. Otherwise, the corresponding sync manager and F\+M\+MU configurations are provided for slave configuration and the respective sync manager\textquotesingle{}s assigned P\+D\+Os are appended to the given domain, if not already done. The offset of the requested P\+DO entry\textquotesingle{}s data inside the domain\textquotesingle{}s process data is returned. Optionally, the P\+DO entry bit position (0-\/7) can be retrieved via the {\itshape bit\+\_\+position} output parameter. This pointer may be {\itshape N\+U\+LL}, in this case an error is raised if the P\+DO entry does not byte-\/align.

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.


\begin{DoxyRetVals}{Return values}
{\em $>$=0} & Success\+: Offset of the P\+DO entry\textquotesingle{}s process data. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em entry\+\_\+index} & Index of the P\+DO entry to register. \\
\hline
{\em entry\+\_\+subindex} & Subindex of the P\+DO entry to register. \\
\hline
{\em domain} & Domain. \\
\hline
{\em bit\+\_\+position} & Optional address if bit addressing is desired \\
\hline
\end{DoxyParams}


Definition at line 739 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga757fd3d421f1ded8ee310c4698afb8ba}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+pos@{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+pos}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+pos@{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+pos}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+pos()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+pos (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint8\+\_\+t}]{sync\+\_\+index,  }\item[{unsigned int}]{pdo\+\_\+pos,  }\item[{unsigned int}]{entry\+\_\+pos,  }\item[{\textbf{ ec\+\_\+domain\+\_\+t} $\ast$}]{domain,  }\item[{unsigned int $\ast$}]{bit\+\_\+position }\end{DoxyParamCaption})}



Registers a P\+DO entry using its position. 

Similar to \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry()}{p.}{group__ApplicationInterface_ga44fe6bd549328c34ca4ed6893765206f}, but not using P\+DO indices but offsets in the P\+DO mapping, because P\+DO entry indices may not be unique inside a slave\textquotesingle{}s P\+DO mapping. An error is raised, if one of the given positions is out of range.

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.


\begin{DoxyRetVals}{Return values}
{\em $>$=0} & Success\+: Offset of the P\+DO entry\textquotesingle{}s process data. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em sync\+\_\+index} & Sync manager index. \\
\hline
{\em pdo\+\_\+pos} & Position of the P\+DO inside the SM. \\
\hline
{\em entry\+\_\+pos} & Position of the entry inside the P\+DO. \\
\hline
{\em domain} & Domain. \\
\hline
{\em bit\+\_\+position} & Optional address if bit addressing is desired \\
\hline
\end{DoxyParams}


Definition at line 794 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga05858fdb5052dfb1161a81d2f8beb553}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+dc@{ecrt\+\_\+slave\+\_\+config\+\_\+dc}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+dc@{ecrt\+\_\+slave\+\_\+config\+\_\+dc}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+dc()}
{\footnotesize\ttfamily void ecrt\+\_\+slave\+\_\+config\+\_\+dc (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint16\+\_\+t}]{assign\+\_\+activate,  }\item[{uint32\+\_\+t}]{sync0\+\_\+cycle,  }\item[{int32\+\_\+t}]{sync0\+\_\+shift,  }\item[{uint32\+\_\+t}]{sync1\+\_\+cycle,  }\item[{int32\+\_\+t}]{sync1\+\_\+shift }\end{DoxyParamCaption})}



Configure distributed clocks. 

Sets the Assign\+Activate word and the cycle and shift times for the sync signals.

The Assign\+Activate word is vendor-\/specific and can be taken from the X\+ML device description file (Device -\/$>$ Dc -\/$>$ Assign\+Activate). Set this to zero, if the slave shall be operated without distributed clocks (default).

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxyAttention}{Attention}
The {\itshape sync1\+\_\+shift} time is ignored. 
\end{DoxyAttention}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em assign\+\_\+activate} & Assign\+Activate word. \\
\hline
{\em sync0\+\_\+cycle} & S\+Y\+N\+C0 cycle time [ns]. \\
\hline
{\em sync0\+\_\+shift} & S\+Y\+N\+C0 shift time [ns]. \\
\hline
{\em sync1\+\_\+cycle} & S\+Y\+N\+C1 cycle time [ns]. \\
\hline
{\em sync1\+\_\+shift} & S\+Y\+N\+C1 shift time [ns]. \\
\hline
\end{DoxyParams}


Definition at line 859 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_gacf5b3147d6fa082ed73417cf7aa4e240}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+sdo@{ecrt\+\_\+slave\+\_\+config\+\_\+sdo}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+sdo@{ecrt\+\_\+slave\+\_\+config\+\_\+sdo}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+sdo()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+sdo (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint16\+\_\+t}]{index,  }\item[{uint8\+\_\+t}]{subindex,  }\item[{const uint8\+\_\+t $\ast$}]{data,  }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption})}



Add an S\+DO configuration. 

An S\+DO configuration is stored in the slave configuration object and is downloaded to the slave whenever the slave is being configured by the master. This usually happens once on master activation, but can be repeated subsequently, for example after the slave\textquotesingle{}s power supply failed.

\begin{DoxyAttention}{Attention}
The S\+D\+Os for P\+DO assignment ({\ttfamily 0x1\+C10} -\/ {\ttfamily 0x1\+C2F}) and P\+DO mapping ({\ttfamily 0x1600} -\/ {\ttfamily 0x17\+FF} and {\ttfamily 0x1\+A00} -\/ {\ttfamily 0x1\+B\+FF}) should not be configured with this function, because they are part of the slave configuration done by the master. Please use \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+pdos()}{p.}{group__ApplicationInterface_ga7bc2683699a5c0c551f0cfdc90c1a559} and friends instead.
\end{DoxyAttention}
This is the generic function for adding an S\+DO configuration. Please note that the this function does not do any endianness correction. If datatype-\/specific functions are needed (that automatically correct the endianness), have a look at \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+sdo8()}{p.}{group__ApplicationInterface_ga93e038f9065d20ea3fa5738c495f0ae5}, \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+sdo16()}{p.}{group__ApplicationInterface_gaacb7fefc226e3a3c0225c39d233d2fa8} and \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+sdo32()}{p.}{group__ApplicationInterface_ga0a87e59a5448389907652ddb2f5768fd}.

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.


\begin{DoxyRetVals}{Return values}
{\em 0} & Success. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em index} & Index of the S\+DO to configure. \\
\hline
{\em subindex} & Subindex of the S\+DO to configure. \\
\hline
{\em data} & Pointer to the data. \\
\hline
{\em size} & Size of the {\itshape data}. \\
\hline
\end{DoxyParams}


Definition at line 878 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga93e038f9065d20ea3fa5738c495f0ae5}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+sdo8@{ecrt\+\_\+slave\+\_\+config\+\_\+sdo8}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+sdo8@{ecrt\+\_\+slave\+\_\+config\+\_\+sdo8}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+sdo8()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+sdo8 (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint16\+\_\+t}]{sdo\+\_\+index,  }\item[{uint8\+\_\+t}]{sdo\+\_\+subindex,  }\item[{uint8\+\_\+t}]{value }\end{DoxyParamCaption})}



Add a configuration value for an 8-\/bit S\+DO. 

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxySeeAlso}{See also}
\doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+sdo()}{p.}{group__ApplicationInterface_gacf5b3147d6fa082ed73417cf7aa4e240}.
\end{DoxySeeAlso}

\begin{DoxyRetVals}{Return values}
{\em 0} & Success. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration \\
\hline
{\em sdo\+\_\+index} & Index of the S\+DO to configure. \\
\hline
{\em sdo\+\_\+subindex} & Subindex of the S\+DO to configure. \\
\hline
{\em value} & Value to set. \\
\hline
\end{DoxyParams}


Definition at line 918 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_gaacb7fefc226e3a3c0225c39d233d2fa8}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+sdo16@{ecrt\+\_\+slave\+\_\+config\+\_\+sdo16}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+sdo16@{ecrt\+\_\+slave\+\_\+config\+\_\+sdo16}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+sdo16()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+sdo16 (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint16\+\_\+t}]{sdo\+\_\+index,  }\item[{uint8\+\_\+t}]{sdo\+\_\+subindex,  }\item[{uint16\+\_\+t}]{value }\end{DoxyParamCaption})}



Add a configuration value for a 16-\/bit S\+DO. 

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxySeeAlso}{See also}
\doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+sdo()}{p.}{group__ApplicationInterface_gacf5b3147d6fa082ed73417cf7aa4e240}.
\end{DoxySeeAlso}

\begin{DoxyRetVals}{Return values}
{\em 0} & Success. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration \\
\hline
{\em sdo\+\_\+index} & Index of the S\+DO to configure. \\
\hline
{\em sdo\+\_\+subindex} & Subindex of the S\+DO to configure. \\
\hline
{\em value} & Value to set. \\
\hline
\end{DoxyParams}


Definition at line 933 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga0a87e59a5448389907652ddb2f5768fd}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+sdo32@{ecrt\+\_\+slave\+\_\+config\+\_\+sdo32}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+sdo32@{ecrt\+\_\+slave\+\_\+config\+\_\+sdo32}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+sdo32()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+sdo32 (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint16\+\_\+t}]{sdo\+\_\+index,  }\item[{uint8\+\_\+t}]{sdo\+\_\+subindex,  }\item[{uint32\+\_\+t}]{value }\end{DoxyParamCaption})}



Add a configuration value for a 32-\/bit S\+DO. 

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxySeeAlso}{See also}
\doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+sdo()}{p.}{group__ApplicationInterface_gacf5b3147d6fa082ed73417cf7aa4e240}.
\end{DoxySeeAlso}

\begin{DoxyRetVals}{Return values}
{\em 0} & Success. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration \\
\hline
{\em sdo\+\_\+index} & Index of the S\+DO to configure. \\
\hline
{\em sdo\+\_\+subindex} & Subindex of the S\+DO to configure. \\
\hline
{\em value} & Value to set. \\
\hline
\end{DoxyParams}


Definition at line 948 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga4231948c36c707fd5bc95e2e813ff7af}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+complete\+\_\+sdo@{ecrt\+\_\+slave\+\_\+config\+\_\+complete\+\_\+sdo}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+complete\+\_\+sdo@{ecrt\+\_\+slave\+\_\+config\+\_\+complete\+\_\+sdo}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+complete\+\_\+sdo()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+complete\+\_\+sdo (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint16\+\_\+t}]{index,  }\item[{const uint8\+\_\+t $\ast$}]{data,  }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption})}



Add configuration data for a complete S\+DO. 

The S\+DO data are transferred via Complete\+Access. Data for the first subindex (0) have to be included.

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxySeeAlso}{See also}
\doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+sdo()}{p.}{group__ApplicationInterface_gacf5b3147d6fa082ed73417cf7aa4e240}.
\end{DoxySeeAlso}

\begin{DoxyRetVals}{Return values}
{\em 0} & Success. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em index} & Index of the S\+DO to configure. \\
\hline
{\em data} & Pointer to the data. \\
\hline
{\em size} & Size of the {\itshape data}. \\
\hline
\end{DoxyParams}


Definition at line 963 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_gae2540078423afe6763c5b7a2554f30bf}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+size@{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+size}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+size@{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+size}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+size()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+size (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{size\+\_\+t}]{elements }\end{DoxyParamCaption})}



Set the size of the CoE emergency ring buffer. 

The initial size is zero, so all messages will be dropped. This method can be called even after master activation, but it will clear the ring buffer!

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxyReturn}{Returns}
0 on success, or negative error code. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em elements} & Number of records of the CoE emergency ring. \\
\hline
\end{DoxyParams}


Definition at line 1003 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga6b58a60d15afe8bab546a766653f227f}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+pop@{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+pop}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+pop@{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+pop}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+pop()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+pop (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint8\+\_\+t $\ast$}]{target }\end{DoxyParamCaption})}



Read and remove one record from the CoE emergency ring buffer. 

A record consists of 8 bytes\+:

Byte 0-\/1\+: Error code (little endian) Byte 2\+: Error register Byte 3-\/7\+: Data

\begin{DoxyReturn}{Returns}
0 on success (record popped), or negative error code (i. e. -\/\+E\+N\+O\+E\+NT, if ring is empty). 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em target} & Pointer to target memory (at least E\+C\+\_\+\+C\+O\+E\+\_\+\+E\+M\+E\+R\+G\+E\+N\+C\+Y\+\_\+\+M\+S\+G\+\_\+\+S\+I\+ZE bytes). \\
\hline
\end{DoxyParams}


Definition at line 1010 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_gad61c6ab7adf19f18953f34c8132c30a7}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+clear@{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+clear}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+clear@{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+clear}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+clear()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+clear (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc }\end{DoxyParamCaption})}



Clears CoE emergency ring buffer and the overrun counter. 

\begin{DoxyReturn}{Returns}
0 on success, or negative error code. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
\end{DoxyParams}


Definition at line 1017 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_gad47666902ef543c1233a8fafcaa9e321}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+overruns@{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+overruns}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+overruns@{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+overruns}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+overruns()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+overruns (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc }\end{DoxyParamCaption})}



Read the number of CoE emergency overruns. 

The overrun counter will be incremented when a CoE emergency message could not be stored in the ring buffer and had to be dropped. Call \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+emerg\+\_\+clear()}{p.}{group__ApplicationInterface_gad61c6ab7adf19f18953f34c8132c30a7} to reset the counter.

\begin{DoxyReturn}{Returns}
Number of overruns since last clear, or negative error code. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
\end{DoxyParams}


Definition at line 1024 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga14aa167c0d4afd84b0fbada417a204f1}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+sdo\+\_\+request@{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+sdo\+\_\+request}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+sdo\+\_\+request@{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+sdo\+\_\+request}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+sdo\+\_\+request()}
{\footnotesize\ttfamily \textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t}$\ast$ ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+sdo\+\_\+request (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint16\+\_\+t}]{index,  }\item[{uint8\+\_\+t}]{subindex,  }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption})}



Create an S\+DO request to exchange S\+D\+Os during realtime operation. 

The created S\+DO request object is freed automatically when the master is released.

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxyReturn}{Returns}
New S\+DO request, or N\+U\+LL on error. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em index} & S\+DO index. \\
\hline
{\em subindex} & S\+DO subindex. \\
\hline
{\em size} & Data size to reserve. \\
\hline
\end{DoxyParams}


Definition at line 1073 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga6341627f6bf764312dd6e8c3140e9be1}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+voe\+\_\+handler@{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+voe\+\_\+handler}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+voe\+\_\+handler@{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+voe\+\_\+handler}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+voe\+\_\+handler()}
{\footnotesize\ttfamily \textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t}$\ast$ ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+voe\+\_\+handler (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption})}



Create an VoE handler to exchange vendor-\/specific data during realtime operation. 

The number of VoE handlers per slave configuration is not limited, but usually it is enough to create one for sending and one for receiving, if both can be done simultaneously.

The created VoE handler object is freed automatically when the master is released.

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxyReturn}{Returns}
New VoE handler, or N\+U\+LL on error. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em size} & Data size to reserve. \\
\hline
\end{DoxyParams}


Definition at line 1158 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga1805e57c39e7bb12840c5e2589021dbe}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+reg\+\_\+request@{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+reg\+\_\+request}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+reg\+\_\+request@{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+reg\+\_\+request}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+reg\+\_\+request()}
{\footnotesize\ttfamily \textbf{ ec\+\_\+reg\+\_\+request\+\_\+t}$\ast$ ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+reg\+\_\+request (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption})}



Create a register request to exchange Ether\+C\+AT register contents during realtime operation. 

This interface should not be used to take over master functionality, instead it is intended for debugging and monitoring reasons.

The created register request object is freed automatically when the master is released.

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxyReturn}{Returns}
New register request, or N\+U\+LL on error. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em size} & Data size to reserve. \\
\hline
\end{DoxyParams}


Definition at line 1116 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_ga6b99c8912ed48a4ddce3d9470083dee1}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+state@{ecrt\+\_\+slave\+\_\+config\+\_\+state}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+state@{ecrt\+\_\+slave\+\_\+config\+\_\+state}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+state()}
{\footnotesize\ttfamily void ecrt\+\_\+slave\+\_\+config\+\_\+state (\begin{DoxyParamCaption}\item[{const \textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+state\+\_\+t} $\ast$}]{state }\end{DoxyParamCaption})}



Outputs the state of the slave configuration. 

Stores the state information in the given {\itshape state} structure. The state information is updated by the master state machine, so it may take a few cycles, until it changes.

\begin{DoxyAttention}{Attention}
If the state of process data exchange shall be monitored in realtime, \doxyref{ecrt\+\_\+domain\+\_\+state()}{p.}{group__ApplicationInterface_gaab8fdd6b9dc3f33d22800d8c517f864a} should be used. 
\end{DoxyAttention}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration \\
\hline
{\em state} & State object to write to. \\
\hline
\end{DoxyParams}


Definition at line 1168 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_gaa3d42e8188c64eaf794e8dc91a61b60b}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+slave\+\_\+config\+\_\+idn@{ecrt\+\_\+slave\+\_\+config\+\_\+idn}}
\index{ecrt\+\_\+slave\+\_\+config\+\_\+idn@{ecrt\+\_\+slave\+\_\+config\+\_\+idn}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+slave\+\_\+config\+\_\+idn()}
{\footnotesize\ttfamily int ecrt\+\_\+slave\+\_\+config\+\_\+idn (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+slave\+\_\+config\+\_\+t} $\ast$}]{sc,  }\item[{uint8\+\_\+t}]{drive\+\_\+no,  }\item[{uint16\+\_\+t}]{idn,  }\item[{\textbf{ ec\+\_\+al\+\_\+state\+\_\+t}}]{state,  }\item[{const uint8\+\_\+t $\ast$}]{data,  }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption})}



Add an SoE I\+DN configuration. 

A configuration for a Sercos-\/over-\/\+Ether\+C\+AT I\+DN is stored in the slave configuration object and is written to the slave whenever the slave is being configured by the master. This usually happens once on master activation, but can be repeated subsequently, for example after the slave\textquotesingle{}s power supply failed.

The {\itshape idn} parameter can be separated into several sections\+:
\begin{DoxyItemize}
\item Bit 15\+: Standard data (0) or Product data (1)
\item Bit 14 -\/ 12\+: Parameter set (0 -\/ 7)
\item Bit 11 -\/ 0\+: Data block number (0 -\/ 4095)
\end{DoxyItemize}

Please note that the this function does not do any endianness correction. Multi-\/byte data have to be passed in Ether\+C\+AT endianness (little-\/endian).

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.


\begin{DoxyRetVals}{Return values}
{\em 0} & Success. \\
\hline
{\em $<$0} & Error code. \\
\hline
\end{DoxyRetVals}

\begin{DoxyParams}{Parameters}
{\em sc} & Slave configuration. \\
\hline
{\em drive\+\_\+no} & Drive number. \\
\hline
{\em idn} & SoE I\+DN. \\
\hline
{\em state} & AL state in which to write the I\+DN (P\+R\+E\+OP or S\+A\+F\+E\+OP). \\
\hline
{\em data} & Pointer to the data. \\
\hline
{\em size} & Size of the {\itshape data}. \\
\hline
\end{DoxyParams}


Definition at line 1185 of file slave\+\_\+config.\+c.

\mbox{\label{group__ApplicationInterface_gaa34bed589e356727aaf0bc7ceee0ed57}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+domain\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+list@{ecrt\+\_\+domain\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+list}}
\index{ecrt\+\_\+domain\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+list@{ecrt\+\_\+domain\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+list}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+domain\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+list()}
{\footnotesize\ttfamily int ecrt\+\_\+domain\+\_\+reg\+\_\+pdo\+\_\+entry\+\_\+list (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+domain\+\_\+t} $\ast$}]{domain,  }\item[{const \textbf{ ec\+\_\+pdo\+\_\+entry\+\_\+reg\+\_\+t} $\ast$}]{pdo\+\_\+entry\+\_\+regs }\end{DoxyParamCaption})}



Registers a bunch of P\+DO entries for a domain. 

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.

\begin{DoxySeeAlso}{See also}
\doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+reg\+\_\+pdo\+\_\+entry()}{p.}{group__ApplicationInterface_ga44fe6bd549328c34ca4ed6893765206f}
\end{DoxySeeAlso}
\begin{DoxyAttention}{Attention}
The registration array has to be terminated with an empty structure, or one with the {\itshape index} field set to zero! 
\end{DoxyAttention}
\begin{DoxyReturn}{Returns}
0 on success, else non-\/zero. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em domain} & Domain. \\
\hline
{\em pdo\+\_\+entry\+\_\+regs} & Array of P\+DO registrations. \\
\hline
\end{DoxyParams}


Definition at line 398 of file domain.\+c.

\mbox{\label{group__ApplicationInterface_gadc492ba8af1b53bfec60748c441f7a10}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+domain\+\_\+size@{ecrt\+\_\+domain\+\_\+size}}
\index{ecrt\+\_\+domain\+\_\+size@{ecrt\+\_\+domain\+\_\+size}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+domain\+\_\+size()}
{\footnotesize\ttfamily size\+\_\+t ecrt\+\_\+domain\+\_\+size (\begin{DoxyParamCaption}\item[{const \textbf{ ec\+\_\+domain\+\_\+t} $\ast$}]{domain }\end{DoxyParamCaption})}



Returns the current size of the domain\textquotesingle{}s process data. 

\begin{DoxyReturn}{Returns}
Size of the process data image, or a negative error code. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em domain} & Domain. \\
\hline
\end{DoxyParams}


Definition at line 427 of file domain.\+c.

\mbox{\label{group__ApplicationInterface_gaafe96aea4c5babcfe433f41e0c84a165}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+domain\+\_\+external\+\_\+memory@{ecrt\+\_\+domain\+\_\+external\+\_\+memory}}
\index{ecrt\+\_\+domain\+\_\+external\+\_\+memory@{ecrt\+\_\+domain\+\_\+external\+\_\+memory}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+domain\+\_\+external\+\_\+memory()}
{\footnotesize\ttfamily void ecrt\+\_\+domain\+\_\+external\+\_\+memory (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+domain\+\_\+t} $\ast$}]{domain,  }\item[{uint8\+\_\+t $\ast$}]{memory }\end{DoxyParamCaption})}



Provide external memory to store the domain\textquotesingle{}s process data. 

Call this after all P\+DO entries have been registered and before activating the master.

The size of the allocated memory must be at least \doxyref{ecrt\+\_\+domain\+\_\+size()}{p.}{group__ApplicationInterface_gadc492ba8af1b53bfec60748c441f7a10}, after all P\+DO entries have been registered.

This method has to be called in non-\/realtime context before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}. 
\begin{DoxyParams}{Parameters}
{\em domain} & Domain. \\
\hline
{\em memory} & Address of the memory to store the process data in. \\
\hline
\end{DoxyParams}


Definition at line 434 of file domain.\+c.

\mbox{\label{group__ApplicationInterface_ga701738b03629d552c15c2cdd9b7b99c2}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+domain\+\_\+data@{ecrt\+\_\+domain\+\_\+data}}
\index{ecrt\+\_\+domain\+\_\+data@{ecrt\+\_\+domain\+\_\+data}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+domain\+\_\+data()}
{\footnotesize\ttfamily uint8\+\_\+t$\ast$ ecrt\+\_\+domain\+\_\+data (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+domain\+\_\+t} $\ast$}]{domain }\end{DoxyParamCaption})}



Returns the domain\textquotesingle{}s process data. 


\begin{DoxyItemize}
\item In kernel context\+: If external memory was provided with \doxyref{ecrt\+\_\+domain\+\_\+external\+\_\+memory()}{p.}{group__ApplicationInterface_gaafe96aea4c5babcfe433f41e0c84a165}, the returned pointer will contain the address of that memory. Otherwise it will point to the internally allocated memory. In the latter case, this method may not be called before \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac}.
\item In userspace context\+: This method has to be called after \doxyref{ecrt\+\_\+master\+\_\+activate()}{p.}{group__ApplicationInterface_gaa44bdeca52f4e821838f4291637103ac} to get the mapped domain process data memory.
\end{DoxyItemize}

\begin{DoxyReturn}{Returns}
Pointer to the process data memory. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em domain} & Domain. \\
\hline
\end{DoxyParams}


Definition at line 451 of file domain.\+c.

\mbox{\label{group__ApplicationInterface_gace65c0f94caa798d1f5930c1317dfd5c}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+domain\+\_\+process@{ecrt\+\_\+domain\+\_\+process}}
\index{ecrt\+\_\+domain\+\_\+process@{ecrt\+\_\+domain\+\_\+process}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+domain\+\_\+process()}
{\footnotesize\ttfamily void ecrt\+\_\+domain\+\_\+process (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+domain\+\_\+t} $\ast$}]{domain }\end{DoxyParamCaption})}



Determines the states of the domain\textquotesingle{}s datagrams. 

Evaluates the working counters of the received datagrams and outputs statistics, if necessary. This must be called after \doxyref{ecrt\+\_\+master\+\_\+receive()}{p.}{group__ApplicationInterface_ga9544e79db51c59a96af6493025cdc933} is expected to receive the domain datagrams in order to make \doxyref{ecrt\+\_\+domain\+\_\+state()}{p.}{group__ApplicationInterface_gaab8fdd6b9dc3f33d22800d8c517f864a} return the result of the last process data exchange. 
\begin{DoxyParams}{Parameters}
{\em domain} & Domain. \\
\hline
\end{DoxyParams}


Definition at line 458 of file domain.\+c.

\mbox{\label{group__ApplicationInterface_ga5367e6982fae333765231a2c50579a96}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+domain\+\_\+queue@{ecrt\+\_\+domain\+\_\+queue}}
\index{ecrt\+\_\+domain\+\_\+queue@{ecrt\+\_\+domain\+\_\+queue}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+domain\+\_\+queue()}
{\footnotesize\ttfamily void ecrt\+\_\+domain\+\_\+queue (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+domain\+\_\+t} $\ast$}]{domain }\end{DoxyParamCaption})}



(Re-\/)queues all domain datagrams in the master\textquotesingle{}s datagram queue. 

Call this function to mark the domain\textquotesingle{}s datagrams for exchanging at the next call of \doxyref{ecrt\+\_\+master\+\_\+send()}{p.}{group__ApplicationInterface_ga453f787866ee66afb98130cf4723762d}. 
\begin{DoxyParams}{Parameters}
{\em domain} & Domain. \\
\hline
\end{DoxyParams}


Definition at line 637 of file domain.\+c.

\mbox{\label{group__ApplicationInterface_gaab8fdd6b9dc3f33d22800d8c517f864a}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+domain\+\_\+state@{ecrt\+\_\+domain\+\_\+state}}
\index{ecrt\+\_\+domain\+\_\+state@{ecrt\+\_\+domain\+\_\+state}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+domain\+\_\+state()}
{\footnotesize\ttfamily void ecrt\+\_\+domain\+\_\+state (\begin{DoxyParamCaption}\item[{const \textbf{ ec\+\_\+domain\+\_\+t} $\ast$}]{domain,  }\item[{\textbf{ ec\+\_\+domain\+\_\+state\+\_\+t} $\ast$}]{state }\end{DoxyParamCaption})}



Reads the state of a domain. 

Stores the domain state in the given {\itshape state} structure.

Using this method, the process data exchange can be monitored in realtime. 
\begin{DoxyParams}{Parameters}
{\em domain} & Domain. \\
\hline
{\em state} & Pointer to a state object to store the information. \\
\hline
\end{DoxyParams}


Definition at line 667 of file domain.\+c.

\mbox{\label{group__ApplicationInterface_gae002eb267f69d91de0c83a5f4f349372}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+sdo\+\_\+request\+\_\+index@{ecrt\+\_\+sdo\+\_\+request\+\_\+index}}
\index{ecrt\+\_\+sdo\+\_\+request\+\_\+index@{ecrt\+\_\+sdo\+\_\+request\+\_\+index}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+sdo\+\_\+request\+\_\+index()}
{\footnotesize\ttfamily void ecrt\+\_\+sdo\+\_\+request\+\_\+index (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$}]{req,  }\item[{uint16\+\_\+t}]{index,  }\item[{uint8\+\_\+t}]{subindex }\end{DoxyParamCaption})}



Set the S\+DO index and subindex. 

\begin{DoxyAttention}{Attention}
If the S\+DO index and/or subindex is changed while \doxyref{ecrt\+\_\+sdo\+\_\+request\+\_\+state()}{p.}{group__ApplicationInterface_ga78d910487f583e333cdf978b4f12c3c1} returns E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY, this may lead to unexpected results. 
\end{DoxyAttention}

\begin{DoxyParams}{Parameters}
{\em req} & S\+DO request. \\
\hline
{\em index} & S\+DO index. \\
\hline
{\em subindex} & S\+DO subindex. \\
\hline
\end{DoxyParams}


Definition at line 187 of file sdo\+\_\+request.\+c.

\mbox{\label{group__ApplicationInterface_gae5018a122570d50568b32211d79f00ff}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+sdo\+\_\+request\+\_\+timeout@{ecrt\+\_\+sdo\+\_\+request\+\_\+timeout}}
\index{ecrt\+\_\+sdo\+\_\+request\+\_\+timeout@{ecrt\+\_\+sdo\+\_\+request\+\_\+timeout}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+sdo\+\_\+request\+\_\+timeout()}
{\footnotesize\ttfamily void ecrt\+\_\+sdo\+\_\+request\+\_\+timeout (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$}]{req,  }\item[{uint32\+\_\+t}]{timeout }\end{DoxyParamCaption})}



Set the timeout for an S\+DO request. 

If the request cannot be processed in the specified time, if will be marked as failed.

The timeout is permanently stored in the request object and is valid until the next call of this method. 
\begin{DoxyParams}{Parameters}
{\em req} & S\+DO request. \\
\hline
{\em timeout} & Timeout in milliseconds. Zero means no timeout. \\
\hline
\end{DoxyParams}


Definition at line 196 of file sdo\+\_\+request.\+c.

\mbox{\label{group__ApplicationInterface_ga70b875084a32b81579bf83c960390967}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+sdo\+\_\+request\+\_\+data@{ecrt\+\_\+sdo\+\_\+request\+\_\+data}}
\index{ecrt\+\_\+sdo\+\_\+request\+\_\+data@{ecrt\+\_\+sdo\+\_\+request\+\_\+data}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+sdo\+\_\+request\+\_\+data()}
{\footnotesize\ttfamily uint8\+\_\+t$\ast$ ecrt\+\_\+sdo\+\_\+request\+\_\+data (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$}]{req }\end{DoxyParamCaption})}



Access to the S\+DO request\textquotesingle{}s data. 

This function returns a pointer to the request\textquotesingle{}s internal S\+DO data memory.


\begin{DoxyItemize}
\item After a read operation was successful, integer data can be evaluated using the E\+C\+\_\+\+R\+E\+A\+D\+\_\+$\ast$() macros as usual. Example\+: 
\begin{DoxyCode}
uint16\_t value = EC_READ_U16(ecrt_sdo_request_data(sdo)));
\end{DoxyCode}

\item If a write operation shall be triggered, the data have to be written to the internal memory. Use the E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+$\ast$() macros, if you are writing integer data. Be sure, that the data fit into the memory. The memory size is a parameter of \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+sdo\+\_\+request()}{p.}{group__ApplicationInterface_ga14aa167c0d4afd84b0fbada417a204f1}. 
\begin{DoxyCode}
EC_WRITE_U16(ecrt_sdo_request_data(sdo), 0xFFFF);
\end{DoxyCode}

\end{DoxyItemize}

\begin{DoxyAttention}{Attention}
The return value can be invalid during a read operation, because the internal S\+DO data memory could be re-\/allocated if the read S\+DO data do not fit inside.
\end{DoxyAttention}
\begin{DoxyReturn}{Returns}
Pointer to the internal S\+DO data memory. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em req} & S\+DO request. \\
\hline
\end{DoxyParams}


Definition at line 203 of file sdo\+\_\+request.\+c.

\mbox{\label{group__ApplicationInterface_ga8de1a948ed0cfa5a9478d2050c2560da}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+sdo\+\_\+request\+\_\+data\+\_\+size@{ecrt\+\_\+sdo\+\_\+request\+\_\+data\+\_\+size}}
\index{ecrt\+\_\+sdo\+\_\+request\+\_\+data\+\_\+size@{ecrt\+\_\+sdo\+\_\+request\+\_\+data\+\_\+size}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+sdo\+\_\+request\+\_\+data\+\_\+size()}
{\footnotesize\ttfamily size\+\_\+t ecrt\+\_\+sdo\+\_\+request\+\_\+data\+\_\+size (\begin{DoxyParamCaption}\item[{const \textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$}]{req }\end{DoxyParamCaption})}



Returns the current S\+DO data size. 

When the S\+DO request is created, the data size is set to the size of the reserved memory. After a read operation the size is set to the size of the read data. The size is not modified in any other situation.

\begin{DoxyReturn}{Returns}
S\+DO data size in bytes. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em req} & S\+DO request. \\
\hline
\end{DoxyParams}


Definition at line 210 of file sdo\+\_\+request.\+c.

\mbox{\label{group__ApplicationInterface_ga78d910487f583e333cdf978b4f12c3c1}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+sdo\+\_\+request\+\_\+state@{ecrt\+\_\+sdo\+\_\+request\+\_\+state}}
\index{ecrt\+\_\+sdo\+\_\+request\+\_\+state@{ecrt\+\_\+sdo\+\_\+request\+\_\+state}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+sdo\+\_\+request\+\_\+state()}
{\footnotesize\ttfamily \textbf{ ec\+\_\+request\+\_\+state\+\_\+t} ecrt\+\_\+sdo\+\_\+request\+\_\+state (\begin{DoxyParamCaption}\item[{const \textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$}]{req }\end{DoxyParamCaption})}



Get the current state of the S\+DO request. 

\begin{DoxyReturn}{Returns}
Request state. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em req} & S\+DO request. \\
\hline
\end{DoxyParams}


Definition at line 217 of file sdo\+\_\+request.\+c.

\mbox{\label{group__ApplicationInterface_gaf0e5a35aa54d971d75a6d00c148ffa83}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+sdo\+\_\+request\+\_\+write@{ecrt\+\_\+sdo\+\_\+request\+\_\+write}}
\index{ecrt\+\_\+sdo\+\_\+request\+\_\+write@{ecrt\+\_\+sdo\+\_\+request\+\_\+write}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+sdo\+\_\+request\+\_\+write()}
{\footnotesize\ttfamily void ecrt\+\_\+sdo\+\_\+request\+\_\+write (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$}]{req }\end{DoxyParamCaption})}



Schedule an S\+DO write operation. 

\begin{DoxyAttention}{Attention}
This method may not be called while \doxyref{ecrt\+\_\+sdo\+\_\+request\+\_\+state()}{p.}{group__ApplicationInterface_ga78d910487f583e333cdf978b4f12c3c1} returns E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY. 
\end{DoxyAttention}

\begin{DoxyParams}{Parameters}
{\em req} & S\+DO request. \\
\hline
\end{DoxyParams}


Definition at line 235 of file sdo\+\_\+request.\+c.

\mbox{\label{group__ApplicationInterface_ga883e43ca2b29e73ac5ec5dec214487b2}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+sdo\+\_\+request\+\_\+read@{ecrt\+\_\+sdo\+\_\+request\+\_\+read}}
\index{ecrt\+\_\+sdo\+\_\+request\+\_\+read@{ecrt\+\_\+sdo\+\_\+request\+\_\+read}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+sdo\+\_\+request\+\_\+read()}
{\footnotesize\ttfamily void ecrt\+\_\+sdo\+\_\+request\+\_\+read (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+sdo\+\_\+request\+\_\+t} $\ast$}]{req }\end{DoxyParamCaption})}



Schedule an S\+DO read operation. 

\begin{DoxyAttention}{Attention}
This method may not be called while \doxyref{ecrt\+\_\+sdo\+\_\+request\+\_\+state()}{p.}{group__ApplicationInterface_ga78d910487f583e333cdf978b4f12c3c1} returns E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY.

After calling this function, the return value of \doxyref{ecrt\+\_\+sdo\+\_\+request\+\_\+data()}{p.}{group__ApplicationInterface_ga70b875084a32b81579bf83c960390967} must be considered as invalid while \doxyref{ecrt\+\_\+sdo\+\_\+request\+\_\+state()}{p.}{group__ApplicationInterface_ga78d910487f583e333cdf978b4f12c3c1} returns E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY. 
\end{DoxyAttention}

\begin{DoxyParams}{Parameters}
{\em req} & S\+DO request. \\
\hline
\end{DoxyParams}


Definition at line 224 of file sdo\+\_\+request.\+c.

\mbox{\label{group__ApplicationInterface_ga0b19acf8409e13630e7525f571659744}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+voe\+\_\+handler\+\_\+send\+\_\+header@{ecrt\+\_\+voe\+\_\+handler\+\_\+send\+\_\+header}}
\index{ecrt\+\_\+voe\+\_\+handler\+\_\+send\+\_\+header@{ecrt\+\_\+voe\+\_\+handler\+\_\+send\+\_\+header}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+voe\+\_\+handler\+\_\+send\+\_\+header()}
{\footnotesize\ttfamily void ecrt\+\_\+voe\+\_\+handler\+\_\+send\+\_\+header (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$}]{voe,  }\item[{uint32\+\_\+t}]{vendor\+\_\+id,  }\item[{uint16\+\_\+t}]{vendor\+\_\+type }\end{DoxyParamCaption})}



Sets the VoE header for future send operations. 

A VoE message shall contain a 4-\/byte vendor ID, followed by a 2-\/byte vendor type at as header. These numbers can be set with this function. The values are valid and will be used for future send operations until the next call of this method. 
\begin{DoxyParams}{Parameters}
{\em voe} & VoE handler. \\
\hline
{\em vendor\+\_\+id} & Vendor ID. \\
\hline
{\em vendor\+\_\+type} & Vendor-\/specific type. \\
\hline
\end{DoxyParams}


Definition at line 127 of file voe\+\_\+handler.\+c.

\mbox{\label{group__ApplicationInterface_gaad5d4056c54c6189a6f5d16bebd46306}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+voe\+\_\+handler\+\_\+received\+\_\+header@{ecrt\+\_\+voe\+\_\+handler\+\_\+received\+\_\+header}}
\index{ecrt\+\_\+voe\+\_\+handler\+\_\+received\+\_\+header@{ecrt\+\_\+voe\+\_\+handler\+\_\+received\+\_\+header}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+voe\+\_\+handler\+\_\+received\+\_\+header()}
{\footnotesize\ttfamily void ecrt\+\_\+voe\+\_\+handler\+\_\+received\+\_\+header (\begin{DoxyParamCaption}\item[{const \textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$}]{voe,  }\item[{uint32\+\_\+t $\ast$}]{vendor\+\_\+id,  }\item[{uint16\+\_\+t $\ast$}]{vendor\+\_\+type }\end{DoxyParamCaption})}



Reads the header data of a received VoE message. 

This method can be used to get the received VoE header information after a read operation has succeeded.

The header information is stored at the memory given by the pointer parameters. 
\begin{DoxyParams}{Parameters}
{\em voe} & VoE handler. \\
\hline
{\em vendor\+\_\+id} & Vendor ID. \\
\hline
{\em vendor\+\_\+type} & Vendor-\/specific type. \\
\hline
\end{DoxyParams}


Definition at line 136 of file voe\+\_\+handler.\+c.

\mbox{\label{group__ApplicationInterface_ga4e08667772cb5ca889324d3a5c0d4b26}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+voe\+\_\+handler\+\_\+data@{ecrt\+\_\+voe\+\_\+handler\+\_\+data}}
\index{ecrt\+\_\+voe\+\_\+handler\+\_\+data@{ecrt\+\_\+voe\+\_\+handler\+\_\+data}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+voe\+\_\+handler\+\_\+data()}
{\footnotesize\ttfamily uint8\+\_\+t$\ast$ ecrt\+\_\+voe\+\_\+handler\+\_\+data (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$}]{voe }\end{DoxyParamCaption})}



Access to the VoE handler\textquotesingle{}s data. 

This function returns a pointer to the VoE handler\textquotesingle{}s internal memory, that points to the actual VoE data right after the VoE header (see \doxyref{ecrt\+\_\+voe\+\_\+handler\+\_\+send\+\_\+header()}{p.}{group__ApplicationInterface_ga0b19acf8409e13630e7525f571659744}).


\begin{DoxyItemize}
\item After a read operation was successful, the memory contains the received data. The size of the received data can be determined via \doxyref{ecrt\+\_\+voe\+\_\+handler\+\_\+data\+\_\+size()}{p.}{group__ApplicationInterface_gaabc36254a5c0f0ff3aec0ead3d4ecc96}.
\item Before a write operation is triggered, the data have to be written to the internal memory. Be sure, that the data fit into the memory. The reserved memory size is a parameter of \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+voe\+\_\+handler()}{p.}{group__ApplicationInterface_ga6341627f6bf764312dd6e8c3140e9be1}.
\end{DoxyItemize}

\begin{DoxyAttention}{Attention}
The returned pointer is not necessarily persistent\+: After a read operation, the internal memory may have been reallocated. This can be avoided by reserving enough memory via the {\itshape size} parameter of \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+voe\+\_\+handler()}{p.}{group__ApplicationInterface_ga6341627f6bf764312dd6e8c3140e9be1}.
\end{DoxyAttention}
\begin{DoxyReturn}{Returns}
Pointer to the internal memory. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em voe} & VoE handler. \\
\hline
\end{DoxyParams}


Definition at line 149 of file voe\+\_\+handler.\+c.

\mbox{\label{group__ApplicationInterface_gaabc36254a5c0f0ff3aec0ead3d4ecc96}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+voe\+\_\+handler\+\_\+data\+\_\+size@{ecrt\+\_\+voe\+\_\+handler\+\_\+data\+\_\+size}}
\index{ecrt\+\_\+voe\+\_\+handler\+\_\+data\+\_\+size@{ecrt\+\_\+voe\+\_\+handler\+\_\+data\+\_\+size}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+voe\+\_\+handler\+\_\+data\+\_\+size()}
{\footnotesize\ttfamily size\+\_\+t ecrt\+\_\+voe\+\_\+handler\+\_\+data\+\_\+size (\begin{DoxyParamCaption}\item[{const \textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$}]{voe }\end{DoxyParamCaption})}



Returns the current data size. 

The data size is the size of the VoE data without the header (see \doxyref{ecrt\+\_\+voe\+\_\+handler\+\_\+send\+\_\+header()}{p.}{group__ApplicationInterface_ga0b19acf8409e13630e7525f571659744}).

When the VoE handler is created, the data size is set to the size of the reserved memory. At a write operation, the data size is set to the number of bytes to write. After a read operation the size is set to the size of the read data. The size is not modified in any other situation.

\begin{DoxyReturn}{Returns}
Data size in bytes. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em voe} & VoE handler. \\
\hline
\end{DoxyParams}


Definition at line 156 of file voe\+\_\+handler.\+c.

\mbox{\label{group__ApplicationInterface_ga1bcfdf71d8d8632c26c07beb17374971}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+voe\+\_\+handler\+\_\+write@{ecrt\+\_\+voe\+\_\+handler\+\_\+write}}
\index{ecrt\+\_\+voe\+\_\+handler\+\_\+write@{ecrt\+\_\+voe\+\_\+handler\+\_\+write}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+voe\+\_\+handler\+\_\+write()}
{\footnotesize\ttfamily void ecrt\+\_\+voe\+\_\+handler\+\_\+write (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$}]{voe,  }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption})}



Start a VoE write operation. 

After this function has been called, the \doxyref{ecrt\+\_\+voe\+\_\+handler\+\_\+execute()}{p.}{group__ApplicationInterface_ga26c45ec21428d91704016494cb5a38ae} method must be called in every bus cycle as long as it returns E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY. No other operation may be started while the handler is busy. 
\begin{DoxyParams}{Parameters}
{\em voe} & VoE handler. \\
\hline
{\em size} & Number of bytes to write (without the VoE header). \\
\hline
\end{DoxyParams}


Definition at line 181 of file voe\+\_\+handler.\+c.

\mbox{\label{group__ApplicationInterface_ga71bc42fb7cb1bd008303bb79df11312e}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+voe\+\_\+handler\+\_\+read@{ecrt\+\_\+voe\+\_\+handler\+\_\+read}}
\index{ecrt\+\_\+voe\+\_\+handler\+\_\+read@{ecrt\+\_\+voe\+\_\+handler\+\_\+read}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+voe\+\_\+handler\+\_\+read()}
{\footnotesize\ttfamily void ecrt\+\_\+voe\+\_\+handler\+\_\+read (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$}]{voe }\end{DoxyParamCaption})}



Start a VoE read operation. 

After this function has been called, the \doxyref{ecrt\+\_\+voe\+\_\+handler\+\_\+execute()}{p.}{group__ApplicationInterface_ga26c45ec21428d91704016494cb5a38ae} method must be called in every bus cycle as long as it returns E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY. No other operation may be started while the handler is busy.

The state machine queries the slave\textquotesingle{}s send mailbox for new data to be send to the master. If no data appear within the E\+C\+\_\+\+V\+O\+E\+\_\+\+R\+E\+S\+P\+O\+N\+S\+E\+\_\+\+T\+I\+M\+E\+O\+UT (defined in \doxyref{master/voe\+\_\+handler.\+c}{p.}{voe__handler_8c}), the operation fails.

On success, the size of the read data can be determined via \doxyref{ecrt\+\_\+voe\+\_\+handler\+\_\+data\+\_\+size()}{p.}{group__ApplicationInterface_gaabc36254a5c0f0ff3aec0ead3d4ecc96}, while the VoE header of the received data can be retrieved with \doxyref{ecrt\+\_\+voe\+\_\+handler\+\_\+received\+\_\+header()}{p.}{group__ApplicationInterface_gaad5d4056c54c6189a6f5d16bebd46306}. 
\begin{DoxyParams}{Parameters}
{\em voe} & VoE handler. \\
\hline
\end{DoxyParams}


Definition at line 163 of file voe\+\_\+handler.\+c.

\mbox{\label{group__ApplicationInterface_gad0bc75bb57e280a55b0e9d31c0f06f71}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+voe\+\_\+handler\+\_\+read\+\_\+nosync@{ecrt\+\_\+voe\+\_\+handler\+\_\+read\+\_\+nosync}}
\index{ecrt\+\_\+voe\+\_\+handler\+\_\+read\+\_\+nosync@{ecrt\+\_\+voe\+\_\+handler\+\_\+read\+\_\+nosync}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+voe\+\_\+handler\+\_\+read\+\_\+nosync()}
{\footnotesize\ttfamily void ecrt\+\_\+voe\+\_\+handler\+\_\+read\+\_\+nosync (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$}]{voe }\end{DoxyParamCaption})}



Start a VoE read operation without querying the sync manager status. 

After this function has been called, the \doxyref{ecrt\+\_\+voe\+\_\+handler\+\_\+execute()}{p.}{group__ApplicationInterface_ga26c45ec21428d91704016494cb5a38ae} method must be called in every bus cycle as long as it returns E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY. No other operation may be started while the handler is busy.

The state machine queries the slave by sending an empty mailbox. The slave fills its data to the master in this mailbox. If no data appear within the E\+C\+\_\+\+V\+O\+E\+\_\+\+R\+E\+S\+P\+O\+N\+S\+E\+\_\+\+T\+I\+M\+E\+O\+UT (defined in \doxyref{master/voe\+\_\+handler.\+c}{p.}{voe__handler_8c}), the operation fails.

On success, the size of the read data can be determined via \doxyref{ecrt\+\_\+voe\+\_\+handler\+\_\+data\+\_\+size()}{p.}{group__ApplicationInterface_gaabc36254a5c0f0ff3aec0ead3d4ecc96}, while the VoE header of the received data can be retrieved with \doxyref{ecrt\+\_\+voe\+\_\+handler\+\_\+received\+\_\+header()}{p.}{group__ApplicationInterface_gaad5d4056c54c6189a6f5d16bebd46306}. 
\begin{DoxyParams}{Parameters}
{\em voe} & VoE handler. \\
\hline
\end{DoxyParams}


Definition at line 172 of file voe\+\_\+handler.\+c.

\mbox{\label{group__ApplicationInterface_ga26c45ec21428d91704016494cb5a38ae}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+voe\+\_\+handler\+\_\+execute@{ecrt\+\_\+voe\+\_\+handler\+\_\+execute}}
\index{ecrt\+\_\+voe\+\_\+handler\+\_\+execute@{ecrt\+\_\+voe\+\_\+handler\+\_\+execute}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+voe\+\_\+handler\+\_\+execute()}
{\footnotesize\ttfamily \textbf{ ec\+\_\+request\+\_\+state\+\_\+t} ecrt\+\_\+voe\+\_\+handler\+\_\+execute (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+voe\+\_\+handler\+\_\+t} $\ast$}]{voe }\end{DoxyParamCaption})}



Execute the handler. 

This method executes the VoE handler. It has to be called in every bus cycle as long as it returns E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY.

\begin{DoxyReturn}{Returns}
Handler state. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em voe} & VoE handler. \\
\hline
\end{DoxyParams}


Definition at line 191 of file voe\+\_\+handler.\+c.

\mbox{\label{group__ApplicationInterface_gaecfbefc3410396bd5ca5f14c489ea838}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+reg\+\_\+request\+\_\+data@{ecrt\+\_\+reg\+\_\+request\+\_\+data}}
\index{ecrt\+\_\+reg\+\_\+request\+\_\+data@{ecrt\+\_\+reg\+\_\+request\+\_\+data}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+reg\+\_\+request\+\_\+data()}
{\footnotesize\ttfamily uint8\+\_\+t$\ast$ ecrt\+\_\+reg\+\_\+request\+\_\+data (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+reg\+\_\+request\+\_\+t} $\ast$}]{req }\end{DoxyParamCaption})}



Access to the register request\textquotesingle{}s data. 

This function returns a pointer to the request\textquotesingle{}s internal memory.


\begin{DoxyItemize}
\item After a read operation was successful, integer data can be evaluated using the E\+C\+\_\+\+R\+E\+A\+D\+\_\+$\ast$() macros as usual. Example\+: 
\begin{DoxyCode}
uint16\_t value = EC_READ_U16(ecrt_reg_request_data(reg\_request)));
\end{DoxyCode}

\item If a write operation shall be triggered, the data have to be written to the internal memory. Use the E\+C\+\_\+\+W\+R\+I\+T\+E\+\_\+$\ast$() macros, if you are writing integer data. Be sure, that the data fit into the memory. The memory size is a parameter of \doxyref{ecrt\+\_\+slave\+\_\+config\+\_\+create\+\_\+reg\+\_\+request()}{p.}{group__ApplicationInterface_ga1805e57c39e7bb12840c5e2589021dbe}. 
\begin{DoxyCode}
EC_WRITE_U16(ecrt_reg_request_data(reg\_request), 0xFFFF);
\end{DoxyCode}

\end{DoxyItemize}

\begin{DoxyReturn}{Returns}
Pointer to the internal memory. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em req} & Register request. \\
\hline
\end{DoxyParams}


Definition at line 85 of file reg\+\_\+request.\+c.

\mbox{\label{group__ApplicationInterface_gac7fc3bbec83497a78b7b075e41eb26e4}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+reg\+\_\+request\+\_\+state@{ecrt\+\_\+reg\+\_\+request\+\_\+state}}
\index{ecrt\+\_\+reg\+\_\+request\+\_\+state@{ecrt\+\_\+reg\+\_\+request\+\_\+state}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+reg\+\_\+request\+\_\+state()}
{\footnotesize\ttfamily \textbf{ ec\+\_\+request\+\_\+state\+\_\+t} ecrt\+\_\+reg\+\_\+request\+\_\+state (\begin{DoxyParamCaption}\item[{const \textbf{ ec\+\_\+reg\+\_\+request\+\_\+t} $\ast$}]{req }\end{DoxyParamCaption})}



Get the current state of the register request. 

\begin{DoxyReturn}{Returns}
Request state. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em req} & Register request. \\
\hline
\end{DoxyParams}


Definition at line 92 of file reg\+\_\+request.\+c.

\mbox{\label{group__ApplicationInterface_ga3c12de18886ffb7aaeb7ac364a7f2034}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+reg\+\_\+request\+\_\+write@{ecrt\+\_\+reg\+\_\+request\+\_\+write}}
\index{ecrt\+\_\+reg\+\_\+request\+\_\+write@{ecrt\+\_\+reg\+\_\+request\+\_\+write}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+reg\+\_\+request\+\_\+write()}
{\footnotesize\ttfamily void ecrt\+\_\+reg\+\_\+request\+\_\+write (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+reg\+\_\+request\+\_\+t} $\ast$}]{req,  }\item[{uint16\+\_\+t}]{address,  }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption})}



Schedule an register write operation. 

\begin{DoxyAttention}{Attention}
This method may not be called while \doxyref{ecrt\+\_\+reg\+\_\+request\+\_\+state()}{p.}{group__ApplicationInterface_gac7fc3bbec83497a78b7b075e41eb26e4} returns E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY.

The {\itshape size} parameter is truncated to the size given at request creation. 
\end{DoxyAttention}

\begin{DoxyParams}{Parameters}
{\em req} & Register request. \\
\hline
{\em address} & Register address. \\
\hline
{\em size} & Size to write. \\
\hline
\end{DoxyParams}


Definition at line 99 of file reg\+\_\+request.\+c.

\mbox{\label{group__ApplicationInterface_gad8da153df44d98812c897c56cabe1e84}} 
\index{Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}!ecrt\+\_\+reg\+\_\+request\+\_\+read@{ecrt\+\_\+reg\+\_\+request\+\_\+read}}
\index{ecrt\+\_\+reg\+\_\+request\+\_\+read@{ecrt\+\_\+reg\+\_\+request\+\_\+read}!Ether\+C\+A\+T Application Interface@{Ether\+C\+A\+T Application Interface}}
\subsubsection{ecrt\+\_\+reg\+\_\+request\+\_\+read()}
{\footnotesize\ttfamily void ecrt\+\_\+reg\+\_\+request\+\_\+read (\begin{DoxyParamCaption}\item[{\textbf{ ec\+\_\+reg\+\_\+request\+\_\+t} $\ast$}]{req,  }\item[{uint16\+\_\+t}]{address,  }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption})}



Schedule a register read operation. 

\begin{DoxyAttention}{Attention}
This method may not be called while \doxyref{ecrt\+\_\+reg\+\_\+request\+\_\+state()}{p.}{group__ApplicationInterface_gac7fc3bbec83497a78b7b075e41eb26e4} returns E\+C\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+B\+U\+SY.

The {\itshape size} parameter is truncated to the size given at request creation. 
\end{DoxyAttention}

\begin{DoxyParams}{Parameters}
{\em req} & Register request. \\
\hline
{\em address} & Register address. \\
\hline
{\em size} & Size to write. \\
\hline
\end{DoxyParams}


Definition at line 110 of file reg\+\_\+request.\+c.

